diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..125cd198 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,6 @@ +Dockerfile +.dockerignore +node_modules +npm-debug.log +README.md +.git diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 8bc8a13f..9cd1d766 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -41,12 +41,18 @@ jobs: # If source files changed but packages didn't, rebuild from a prior cache. restore-keys: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}- - run: yarn install --frozen-lockfile - - run: yarn export + - run: yarn build - name: Cache build output uses: actions/cache@v2 id: restore-build with: - path: ./out/ + path: | + ./next.config.js + ./pages/ + ./public/ + ./.next/static/ + ./.next/standalone/ + ./packages.jsan key: ${{ github.sha }} docker: @@ -61,16 +67,20 @@ jobs: - uses: actions/cache@v2 id: restore-build with: - path: ./out/ + path: | + ./next.config.js + ./pages/ + ./public/ + ./.next/static/ + ./.next/standalone/ + ./packages.jsan key: ${{ github.sha }} - name: Docker meta id: meta uses: docker/metadata-action@v4 with: # list of Docker images to use as base name for tags - images: | - ajnart/homarr - ghcr.io/ajnart/homarr + images: ghcr.io/${{ github.repository }} # generate Docker tags based on the following events/attributes tags: | type=raw,value=latest,enable={{is_default_branch}} @@ -79,12 +89,6 @@ jobs: uses: docker/setup-qemu-action@v2 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 - - name: Login to DockerHub - if: github.event_name != 'pull_request' - uses: docker/login-action@v2 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Login to GHCR if: github.event_name != 'pull_request' uses: docker/login-action@v2 diff --git a/Dockerfile b/Dockerfile index d5909347..5d13c04a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,2 +1,20 @@ -FROM nginx:alpine -COPY ./out /usr/share/nginx/html +FROM node:16-alpine +WORKDIR /app +ENV NODE_ENV production +RUN addgroup --system --gid 1001 nodejs +RUN adduser --system --uid 1001 nextjs + +COPY /next.config.js ./ +COPY /public ./public +COPY /package.json ./package.json + +# Automatically leverage output traces to reduce image size +# https://nextjs.org/docs/advanced-features/output-file-tracing +COPY --chown=nextjs:nodejs /.next/standalone ./ +COPY --chown=nextjs:nodejs /.next/static ./.next/static + +USER nextjs +EXPOSE 7575 +ENV PORT 7575 +VOLUME /app/data/configs +CMD ["node", "server.js"]