From ca59f72429a55adff852cafc53f859c5bf00e5b2 Mon Sep 17 00:00:00 2001 From: DataHearth Date: Thu, 10 Aug 2023 16:36:38 +0200 Subject: [PATCH] update dockerfile web target --- .gitea/workflows/container-web.yml | 14 +++++++------- .gitea/workflows/container.yml | 2 +- Dockerfile | 20 ++++++++++++++------ Justfile | 22 +++++++++++----------- 4 files changed, 33 insertions(+), 25 deletions(-) diff --git a/.gitea/workflows/container-web.yml b/.gitea/workflows/container-web.yml index 9ffd04f..1de258c 100644 --- a/.gitea/workflows/container-web.yml +++ b/.gitea/workflows/container-web.yml @@ -52,9 +52,9 @@ jobs: ${{ env.GITEA_REGISTRY }}/${{ env.GITEA_REPOSITORY }} ${{ env.GH_REGISTRY }}/${{ env.GH_REPOSITORY }} tags: | - type=semver,pattern=web-builder-latest - type=semver,pattern=web-builder-{{version}} - type=semver,pattern=web-builder-{{major}}.{{minor}} + type=semver,pattern=web-dependencies-latest + type=semver,pattern=web-dependencies-{{version}} + type=semver,pattern=web-dependencies-{{major}}.{{minor}} flavor: | latest=false @@ -64,12 +64,12 @@ jobs: with: context: . push: true - target: web-builder + target: web-dependencies cache-to: type=inline cache-from: | - type=registry,ref=${{ env.GITEA_REPOSITORY }}:web-builder-latest - type=registry,ref=${{ env.GITEA_REGISTRY }}/${{ env.GITEA_REPOSITORY }}:web-builder-latest - type=registry,ref=${{ env.GH_REGISTRY }}/${{ env.GH_REPOSITORY }}:web-builder-latest + type=registry,ref=${{ env.GITEA_REPOSITORY }}:web-dependencies-latest + type=registry,ref=${{ env.GITEA_REGISTRY }}/${{ env.GITEA_REPOSITORY }}:web-dependencies-latest + type=registry,ref=${{ env.GH_REGISTRY }}/${{ env.GH_REPOSITORY }}:web-dependencies-latest tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} diff --git a/.gitea/workflows/container.yml b/.gitea/workflows/container.yml index 685c426..2c97050 100644 --- a/.gitea/workflows/container.yml +++ b/.gitea/workflows/container.yml @@ -21,7 +21,7 @@ jobs: strategy: matrix: - target: [rust-builder, web-builder] + target: [rust-builder, web-dependencies] steps: - name: Checkout diff --git a/Dockerfile b/Dockerfile index ed59b98..1ef6be5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -42,22 +42,30 @@ CMD [ "/database" ] # * Build the web * # ******************************** -FROM node:18-slim as web-builder +FROM node:18-slim as web-dependencies WORKDIR /app -COPY frontend/ ./ +COPY frontend/package.json frontend/.npmrc ./ RUN npm install -RUN npm run build FROM node:18-alpine3.18 as web +WORKDIR /tmp/app + +COPY frontend/ ./ + +COPY --from=web-dependencies /app/node_modules ./node_modules + +RUN npm run build + WORKDIR /app -COPY --from=web-builder /app/build ./build -COPY --from=web-builder /app/node_modules ./node_modules -COPY --from=web-builder /app/package.json /app/package-lock.json ./ +RUN mv /tmp/app/build /tmp/app/node_modules /tmp/app/package.json . +RUN rm -rf /tmp/app + +COPY --from=web-dependencies /app/package-lock.json ./ ENV DOTENV_CONFIG_PATH=/app/config/.env diff --git a/Justfile b/Justfile index b551c09..adc3c00 100644 --- a/Justfile +++ b/Justfile @@ -2,7 +2,7 @@ set shell := ["zsh", "-uc"] base_img_name := "datahearth/tech-bot" gitea_img_name := "gitea.antoine-langlois.net/" + base_img_name -all_targets := "rust-builder web-builder bot web database" +all_targets := "rust-builder web-dependencies bot web database" alias b := build alias p := push @@ -10,32 +10,32 @@ alias ba := build-all alias pa := push-all build TARGET: - @docker build -t {{base_img_name}}:{{TARGET}} \ + @docker build -t {{base_img_name}}:{{TARGET}}-latest \ --target {{TARGET}} \ --cache-to type=inline \ - --cache-from type=registry,ref={{base_img_name}}:{{TARGET}} . - @docker tag {{base_img_name}}:{{TARGET}} {{gitea_img_name}}:{{TARGET}} + --cache-from type=registry,ref={{base_img_name}}:{{TARGET}}-latest . + @docker tag {{base_img_name}}:{{TARGET}}-latest {{gitea_img_name}}:{{TARGET}}-latest push TARGET: (build TARGET) - @docker push {{base_img_name}}:{{TARGET}} - @docker push {{gitea_img_name}}:{{TARGET}} + @docker push {{base_img_name}}:{{TARGET}}-latest + @docker push {{gitea_img_name}}:{{TARGET}}-latest build-all: #!/usr/bin/env zsh for target in {{all_targets}}; do echo "Building $target"; - docker build -t {{base_img_name}}:$target \ + docker build -t {{base_img_name}}:$target-latest \ --target $target \ --cache-to type=inline \ - --cache-from type=registry,ref={{base_img_name}}:$target .; + --cache-from type=registry,ref={{base_img_name}}:$target-latest .; - docker tag {{base_img_name}}:$target {{gitea_img_name}}:$target; + docker tag {{base_img_name}}:$target-latest {{gitea_img_name}}:$target-latest; done push-all: build-all #!/usr/bin/env zsh for target in {{all_targets}}; do echo "Pushing $target"; - docker push {{base_img_name}}:$target; - docker push {{gitea_img_name}}:$target; + docker push {{base_img_name}}:$target-latest; + docker push {{gitea_img_name}}:$target-latest; done