356467b618
When starting the server via docker-compose currently the server starts up faster than the postgres instance. This causes the server app to crash. The fix now adds a wait script that pings the database and the cache containers unit they properly start up. This delays the server boot until all deps are started.
60 lines
1.8 KiB
Docker
60 lines
1.8 KiB
Docker
FROM node:14.15.4-alpine3.12@sha256:55bf28ea11b18fd914e1242835ea3299ec76f5a034e8c6e42b2ede70064e338c as node
|
|
|
|
FROM node as build
|
|
# Having multiple steps in builder doesn't increase the final image size
|
|
# So having verbose steps for readability and caching should be the target
|
|
|
|
WORKDIR /opt/viewer
|
|
COPY packages/viewer/package*.json ./
|
|
RUN npm install
|
|
COPY packages/viewer .
|
|
RUN npm run build
|
|
|
|
WORKDIR /opt/frontend
|
|
# Copy package defs first they are the least likely to change
|
|
# Keeping this order will least likely trigger full rebuild
|
|
COPY packages/frontend/package*.json ./
|
|
RUN npm install ../viewer
|
|
RUN npm ci
|
|
|
|
WORKDIR /opt
|
|
COPY packages/server/package*.json server/
|
|
ENV NODE_ENV production
|
|
RUN npm --prefix server ci server
|
|
|
|
# Copy remaining files across for frontend. Changes to these files
|
|
# will be more common than changes to the dependencies. This should
|
|
# speed up rebuilds.
|
|
COPY packages/frontend frontend
|
|
|
|
WORKDIR /opt/frontend
|
|
RUN npm run build
|
|
|
|
FROM node as runtime
|
|
|
|
RUN apk add --no-cache tini=0.19.0-r0
|
|
ADD https://github.com/ufoscout/docker-compose-wait/releases/download/2.7.3/wait /wait
|
|
RUN chmod +x /wait
|
|
|
|
# Use a non-root user for increased security.
|
|
USER node
|
|
|
|
ENV NODE_ENV production
|
|
|
|
# Copy dependencies and static files from build layer
|
|
COPY --from=build --chown=node /opt/frontend/dist /home/node/frontend/dist
|
|
COPY --from=build --chown=node /opt/server /home/node/server
|
|
|
|
# Run the application from the non root users home directory
|
|
WORKDIR /home/node/server
|
|
|
|
# Copy remaining files across for the server. Changes to these
|
|
# files will be more common than changes to the dependencies.
|
|
# This should speed up rebuilds.
|
|
COPY --chown=node packages/server /home/node/server
|
|
|
|
# Init for containers https://github.com/krallin/tini
|
|
ENTRYPOINT [ "/sbin/tini", "--" ]
|
|
|
|
CMD /wait && node bin/www
|