| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- # arguments
- ARG VERSION="master"
- # Branch to check out
- ARG CHECKOUT_BRANCH="master"
- FROM node:lts AS build
- #environment variables
- ENV PROJECT_NAME="headscale-ui"
- # URL for the github/git location
- ENV PROJECT_URL="https://github.com/gurucomputing/headscale-ui"
- # Set the staging environment
- WORKDIR /staging/scripts
- WORKDIR /staging
- RUN chown 1000:1000 /staging
- # Copy across the scripts folder
- COPY scripts/* ./scripts/
- # Set permissions for all scripts. We do not want normal users to have write
- # access to the scripts
- RUN chown -R 0:0 scripts
- RUN chmod -R 755 scripts
- # Build the image. This build runs as root
- RUN /staging/scripts/1-image-build.sh
- #####
- ## Second Image
- #####
- FROM alpine:latest
- #environment variables
- ENV PROJECT_NAME="headscale-ui"
- # URL for the github/git location
- ENV PROJECT_URL="https://github.com/gurucomputing/headscale-ui"
- # Ports that caddy will run on
- ENV HTTP_PORT="80"
- ENV HTTPS_PORT="443"
- # Production Web Server port. Runs a self signed SSL certificate
- EXPOSE 443
- # Set the staging environment
- WORKDIR /data
- WORKDIR /web
- WORKDIR /staging/scripts
- WORKDIR /staging
- # Copy across the scripts folder
- COPY scripts/* ./scripts/
- # Copy default caddy config from project root
- COPY ./Caddyfile /staging/Caddyfile
- COPY --from=build /staging/${PROJECT_NAME}/build /web
- RUN apk add --no-cache caddy
- # Create a group and user
- RUN addgroup -S appgroup && adduser -D appuser -G appgroup
- # Set permissions for all scripts. We do not want normal users to have write
- # access to the scripts
- RUN chown -R 0:0 scripts
- RUN chmod -R 755 scripts
- RUN chown -R appuser:appgroup /web
- RUN chown -R appuser:appgroup /data
- # Tell docker that all future commands should run as the appuser user
- USER appuser
- WORKDIR /data
- ENTRYPOINT /bin/sh /staging/scripts/2-initialise.sh
|