diff --git a/.github/workflows/build-and-publish.yml b/.github/workflows/build-and-publish.yml index aeec36027..e7c784ff5 100644 --- a/.github/workflows/build-and-publish.yml +++ b/.github/workflows/build-and-publish.yml @@ -43,51 +43,20 @@ jobs: GITHUB_RUN_NUMBER: ${{ github.run_number }} run: echo "::set-output name=version::$(date +'%Y-%m-%d').$GITHUB_RUN_NUMBER" - - name: Build builder image - id: docker_build_base + - name: Build container image and push to Docker Hub uses: docker/build-push-action@v4 with: context: . - push: false load: false - cache-from: | - type=gha,scope=builder - cache-to: | - type=gha,scope=builder,mode=max - target: builder - - - name: Build socket image and push to Docker Hub - uses: docker/build-push-action@v4 - with: - context: . - load: false - cache-from: | - type=gha,scope=socket-server - type=gha,scope=builder - cache-to: | - type=gha,scope=socket-server,mode=max - tags: | - ${{ secrets.DOCKERHUB_USERNAME }}/pathology-socket:latest - ${{ secrets.DOCKERHUB_USERNAME }}/pathology-socket:${{ steps.vars.outputs.sha_short }} - ${{ secrets.DOCKERHUB_USERNAME }}/pathology-socket:${{ steps.docker_build_version.outputs.version }} - push: ${{ github.ref == 'refs/heads/main' }} - target: socket-server - - - name: Build app image and push to Docker Hub - uses: docker/build-push-action@v4 - with: - context: . - load: false - cache-from: | - type=gha,scope=runner - type=gha,scope=socker-server - type=gha,scope=builder - cache-to: | - type=gha,scope=runner,mode=max + cache-from: type=gha + cache-to: type=gha,mode=max tags: | ${{ secrets.DOCKERHUB_USERNAME }}/pathology:latest ${{ secrets.DOCKERHUB_USERNAME }}/pathology:${{ steps.vars.outputs.sha_short }} ${{ secrets.DOCKERHUB_USERNAME }}/pathology:${{ steps.docker_build_version.outputs.version }} + ${{ secrets.DOCKERHUB_USERNAME }}/pathology-socket:latest + ${{ secrets.DOCKERHUB_USERNAME }}/pathology-socket:${{ steps.vars.outputs.sha_short }} + ${{ secrets.DOCKERHUB_USERNAME }}/pathology-socket:${{ steps.docker_build_version.outputs.version }} push: ${{ github.ref == 'refs/heads/main' }} target: runner diff --git a/Dockerfile b/Dockerfile index 25993e3b0..cc7e1990a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,9 +1,13 @@ -FROM node:18 AS builder +FROM node:18-alpine WORKDIR /app ENV NEXT_TELEMETRY_DISABLED=1 +ENV NEW_RELIC_LOG_ENABLED=false +ENV NEW_RELIC_ERROR_COLLECTOR_IGNORE_ERROR_CODES="404,401" + RUN npm config set fund false RUN npm install -g ts-node + COPY package*.json ./ RUN npm install --platform=linuxmusl @@ -13,48 +17,6 @@ ARG NEW_RELIC_APP_NAME=dummy COPY . . RUN npm run build --production -FROM node:18-alpine AS socket-server -WORKDIR /app - -ENV NEW_RELIC_LOG_ENABLED=false -ENV NEW_RELIC_ERROR_COLLECTOR_IGNORE_ERROR_CODES="404,401" - -COPY --from=builder --chown=node:node /usr/local/lib/node_modules/ts-node/ /usr/local/lib/node_modules/ts-node -RUN ln -s /usr/local/lib/node_modules/ts-node/dist/bin.js /usr/local/bin/ts-node - -COPY --from=builder --chown=node:node /app/global.d.ts ./global.d.ts -COPY --from=builder --chown=node:node /app/components ./components -COPY --from=builder --chown=node:node /app/constants ./constants -COPY --from=builder --chown=node:node /app/contexts ./contexts -COPY --from=builder --chown=node:node /app/helpers ./helpers -COPY --from=builder --chown=node:node /app/lib ./lib -COPY --from=builder --chown=node:node /app/models ./models -COPY --from=builder --chown=node:node /app/pages ./pages -COPY --from=builder --chown=node:node /app/public ./public -COPY --from=builder --chown=node:node /app/server ./server -COPY --from=builder --chown=node:node /app/styles ./styles -COPY --from=builder --chown=node:node /app/types ./types - -COPY --from=builder --chown=node:node /app/node_modules ./node_modules -COPY --from=builder --chown=node:node /app/package.json ./package.json -COPY --from=builder --chown=node:node /app/tsconfig.json ./tsconfig.json - -FROM node:18-alpine AS runner -WORKDIR /app - -ENV NEW_RELIC_LOG_ENABLED=false -ENV NEW_RELIC_ERROR_COLLECTOR_IGNORE_ERROR_CODES="404,401" - -COPY --from=builder --chown=node:node /usr/local/lib/node_modules/ts-node/ /usr/local/lib/node_modules/ts-node -RUN ln -s /usr/local/lib/node_modules/ts-node/dist/bin.js /usr/local/bin/ts-node - -COPY --from=builder --chown=node:node /app/package.json ./package.json -COPY --from=builder --chown=node:node /app/tsconfig.json ./tsconfig.json -COPY --from=builder --chown=node:node /app/node_modules ./node_modules -COPY --from=builder --chown=node:node /app/server ./server -COPY --from=builder --chown=node:node /app/.next ./.next -COPY --from=builder --chown=node:node /app/public ./public - USER node CMD ["npm","start"] \ No newline at end of file