disseminate/Dockerfile
hex 6d2f85f981
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
fix: static folder not getting transferred
2024-08-14 02:16:09 +02:00

63 lines
1.7 KiB
Docker

# node image
FROM node:21-alpine3.18 as compiled
WORKDIR /tmp
USER root
# Copy the source code into the temp folder.
COPY . /tmp
# Installing the dependencies required for compiling.
RUN yarn install && yarn global add typescript
# Compile the project FROM typescript INTO javascript
RUN tsc
# Putting some stuff into the final build
RUN cp -r /tmp/*.json /tmp/build/ && \
cp -r /tmp/data.template /tmp/build/ && \
cp -r /tmp/src/views /tmp/build/src/ && \
cp -r /tmp/data.template /tmp/build && \
cp -r /tmp/scripts/docker_bootstrapper.sh /tmp/build/bootstrapper.sh && \
cp -r /tmp/scripts/docker_run.sh /tmp/build/runner.sh && \
cp -r /tmp/static /tmp/build/
# The final version of disseminate is now in /tmp/build
FROM node:21-alpine3.18 as main_image
# Create a volume for our data folder
VOLUME ["/app/data"]
# Create a directory for our new app.
RUN mkdir -p /app
# Switch to the directory.
WORKDIR /app
# Delete default node user for the next step.
RUN deluser node
# We want to run disseminate as a non-root user.
ARG UID=1000
ARG GID=1000
RUN addgroup -g $GID disseminate && \
adduser --home /app --uid $UID -G disseminate --disabled-password disseminate
# Give our non-root user access to /app
RUN chown -R disseminate:disseminate /app
# Installing bash, mostly for debugging.
RUN apk add bash
# Copying the compiled project into our main image, ownership of the build is set to our aforementioned (non-root) user.
COPY --chown=$UID:$GID --from=compiled /tmp/build/ /app
RUN chown -R $UID:$GID /app
# Switching to user.
USER disseminate
# Installing the dependencies.
RUN yarn install --production
USER root
# Startup command
CMD ["npm", "run", "docker:prod:bootstrapper"]