mirror of
https://github.com/verdaccio/verdaccio.git
synced 2024-12-16 21:56:25 -05:00
apm: update docker
This commit is contained in:
parent
71fcd2de91
commit
5bcfd7e2e2
3 changed files with 81 additions and 43 deletions
|
@ -8,26 +8,22 @@
|
|||
.*
|
||||
# you can add exceptions like in .gitignore to maintain a whitelist:
|
||||
# e.g.
|
||||
!.babelrc
|
||||
!.eslintrc
|
||||
!.prettierrc.json
|
||||
!.prettierignore
|
||||
!babel.config.js
|
||||
!eslintrc.js
|
||||
!.prettierrc
|
||||
!.eslintignore
|
||||
!.stylelintrc
|
||||
!.jest.config.js
|
||||
!.jestEnvironment.js
|
||||
!.yarnrc.yml
|
||||
!.yarn/releases/yarn-*.cjs
|
||||
!.yarn/plugins/*
|
||||
!.pnp.js
|
||||
|
||||
# do not copy over node_modules we will run `pnpm install` anyway
|
||||
# just in case, yarn 2 pnp is enabled
|
||||
node_modules
|
||||
website
|
||||
jest
|
||||
docs
|
||||
contrib
|
||||
docker-examples
|
||||
website
|
||||
systemd
|
||||
e2e
|
||||
assets
|
||||
types
|
||||
scripts
|
||||
.husky/
|
||||
.git/
|
||||
|
||||
# output from test runs and similar things
|
||||
*.log
|
||||
|
@ -37,7 +33,21 @@ coverage/
|
|||
# IDE config files
|
||||
jsconfig.json
|
||||
*.iml
|
||||
|
||||
# let's not get too recursive ;)
|
||||
Dockerfile*
|
||||
docker-compose*.yaml
|
||||
.github/
|
||||
.husky/
|
||||
*.log
|
||||
coverage/
|
||||
.vscode/
|
||||
*.md
|
||||
contrib/
|
||||
docs/
|
||||
docker-examples/
|
||||
systemd/
|
||||
assets/
|
||||
jest*.js
|
||||
test/
|
||||
wiki/
|
||||
debug/
|
||||
|
|
14
.github/workflows/docker-apm.yml
vendored
14
.github/workflows/docker-apm.yml
vendored
|
@ -4,13 +4,17 @@ on:
|
|||
workflow_dispatch:
|
||||
push:
|
||||
paths:
|
||||
- '.github/workflows/docker-apm.yml'
|
||||
- 'packages/**'
|
||||
- .github/workflows/docker-publish.yml
|
||||
- 'src/**'
|
||||
- 'conf/**'
|
||||
- 'types/**'
|
||||
- 'docker-bin/**'
|
||||
- 'bin/**'
|
||||
- 'package.json'
|
||||
- 'pnpm-*.yaml'
|
||||
- 'Dockerfile'
|
||||
- '.dockerignore'
|
||||
- 'yarn.lock'
|
||||
- '.yarn/**'
|
||||
- '.yarnrc.yaml'
|
||||
- '.pnp.js'
|
||||
branches:
|
||||
- 'apm'
|
||||
|
||||
|
|
66
Dockerfile
66
Dockerfile
|
@ -1,9 +1,13 @@
|
|||
FROM --platform=${BUILDPLATFORM:-linux/amd64} node:21-alpine AS builder
|
||||
FROM --platform=${BUILDPLATFORM:-linux/amd64} node:20.15.1-alpine AS builder
|
||||
|
||||
ENV NODE_ENV=development \
|
||||
VERDACCIO_BUILD_REGISTRY=https://registry.npmjs.org
|
||||
ENV NODE_ENV=production \
|
||||
VERDACCIO_BUILD_REGISTRY=https://registry.npmjs.org \
|
||||
HUSKY_SKIP_INSTALL=1 \
|
||||
CI=true \
|
||||
HUSKY_DEBUG=1
|
||||
|
||||
RUN apk --no-cache add openssl ca-certificates wget && \
|
||||
RUN apk add --force-overwrite && \
|
||||
apk --no-cache add openssl ca-certificates wget && \
|
||||
apk --no-cache add g++ gcc libgcc libstdc++ linux-headers make python3 && \
|
||||
wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub && \
|
||||
wget -q https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.35-r0/glibc-2.35-r0.apk && \
|
||||
|
@ -11,17 +15,24 @@ RUN apk --no-cache add openssl ca-certificates wget && \
|
|||
|
||||
WORKDIR /opt/verdaccio-build
|
||||
COPY . .
|
||||
RUN npm -g i pnpm@8.14.0 && \
|
||||
pnpm config set registry $VERDACCIO_BUILD_REGISTRY && \
|
||||
pnpm install --frozen-lockfile --ignore-scripts && \
|
||||
rm -Rf test && \
|
||||
pnpm run build
|
||||
# FIXME: need to remove devDependencies from the build
|
||||
# NODE_ENV=production pnpm install --frozen-lockfile --ignore-scripts
|
||||
# RUN pnpm install --prod --ignore-scripts
|
||||
|
||||
FROM node:21-alpine
|
||||
LABEL maintainer="https://github.com/verdaccio/verdaccio"
|
||||
## build the project and create a tarball of the project for later
|
||||
## global installation
|
||||
RUN yarn config set npmRegistryServer $VERDACCIO_BUILD_REGISTRY && \
|
||||
yarn config set enableProgressBars true && \
|
||||
yarn config set enableScripts false && \
|
||||
yarn install --immutable && \
|
||||
yarn build
|
||||
## pack the project
|
||||
RUN yarn pack --dry-run \
|
||||
&& yarn pack --out verdaccio.tgz \
|
||||
&& mkdir -p /opt/tarball \
|
||||
&& mv /opt/verdaccio-build/verdaccio.tgz /opt/tarball
|
||||
## clean up and reduce bundle size
|
||||
RUN rm -Rf /opt/verdaccio-build
|
||||
|
||||
FROM node:20.15.1-alpine
|
||||
LABEL maintainer="https://github.com/abapPM/abapPM"
|
||||
|
||||
ENV VERDACCIO_APPDIR=/opt/verdaccio \
|
||||
VERDACCIO_USER_NAME=verdaccio \
|
||||
|
@ -33,18 +44,33 @@ ENV PATH=$VERDACCIO_APPDIR/docker-bin:$PATH \
|
|||
|
||||
WORKDIR $VERDACCIO_APPDIR
|
||||
|
||||
# https://github.com/Yelp/dumb-init
|
||||
RUN apk --no-cache add openssl dumb-init
|
||||
|
||||
RUN mkdir -p /verdaccio/storage /verdaccio/plugins /verdaccio/conf
|
||||
|
||||
COPY --from=builder /opt/verdaccio-build .
|
||||
COPY --from=builder /opt/tarball .
|
||||
|
||||
RUN ls packages/config/src/conf
|
||||
ADD config.yaml /verdaccio/conf/config.yaml
|
||||
USER root
|
||||
# install verdaccio as a global package so is fully handled by npm
|
||||
# ensure none dependency is being missing and is prod by default
|
||||
RUN npm install -g $VERDACCIO_APPDIR/verdaccio.tgz \
|
||||
## clean up cache
|
||||
&& npm cache clean --force \
|
||||
&& rm -Rf .npm/ \
|
||||
&& rm $VERDACCIO_APPDIR/verdaccio.tgz \
|
||||
# yarn is not need it after this step
|
||||
# Also remove the symlinks added in the [`node:alpine` Docker image](https://github.com/nodejs/docker-node/blob/02a64a08a98a472c6141cd583d2e9fc47bcd9bfd/18/alpine3.16/Dockerfile#L91-L92).
|
||||
&& rm -Rf /opt/yarn-v1.22.19/ /usr/local/bin/yarn /usr/local/bin/yarnpkg
|
||||
|
||||
# apm assets and config
|
||||
ADD abappm /verdaccio/abappm
|
||||
ADD config.yaml /verdaccio/conf/config.yaml
|
||||
|
||||
ADD docker-bin $VERDACCIO_APPDIR/docker-bin
|
||||
|
||||
RUN adduser -u $VERDACCIO_USER_UID -S -D -h $VERDACCIO_APPDIR -g "$VERDACCIO_USER_NAME user" -s /sbin/nologin $VERDACCIO_USER_NAME && \
|
||||
chmod -R +x $VERDACCIO_APPDIR/packages/verdaccio/bin $VERDACCIO_APPDIR/docker-bin && \
|
||||
chmod -R +x /usr/local/lib/node_modules/verdaccio/bin/verdaccio $VERDACCIO_APPDIR/docker-bin && \
|
||||
chown -R $VERDACCIO_USER_UID:root /verdaccio/storage && \
|
||||
chmod -R g=u /verdaccio/storage /etc/passwd
|
||||
|
||||
|
@ -56,6 +82,4 @@ VOLUME /verdaccio/storage
|
|||
|
||||
ENTRYPOINT ["uid_entrypoint"]
|
||||
|
||||
CMD $VERDACCIO_APPDIR/packages/verdaccio/bin/verdaccio --config /verdaccio/conf/config.yaml --listen $VERDACCIO_PROTOCOL://0.0.0.0:$VERDACCIO_PORT
|
||||
|
||||
HEALTHCHECK --interval=5s --timeout=1s CMD /verdaccio/abappm/healthcheck.sh
|
||||
CMD verdaccio --config /verdaccio/conf/config.yaml --listen $VERDACCIO_PROTOCOL://0.0.0.0:$VERDACCIO_PORT
|
||||
|
|
Loading…
Reference in a new issue