From 5752606fec1d6820f1ae1a6f169f32552bacf48a Mon Sep 17 00:00:00 2001 From: Herculino Trotta Date: Fri, 27 Dec 2024 11:20:14 -0300 Subject: [PATCH 1/3] docker(prod): update docker-compose.prod.yml to use registry image --- docker-compose.prod.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index 1520b53..1dc8a71 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -3,7 +3,7 @@ services: build: context: . dockerfile: ./docker/prod/django/Dockerfile - image: ${SERVER_NAME} + image: ghcr.io/eitchtee/wygiwyh:latest container_name: ${SERVER_NAME} command: /start ports: @@ -27,7 +27,6 @@ services: procrastinate: <<: *django - image: ${PROCRASTINATE_NAME} container_name: ${PROCRASTINATE_NAME} depends_on: - db From 8661fb39e8f822ad7209788394b91a171056584a Mon Sep 17 00:00:00 2001 From: Herculino Trotta Date: Fri, 27 Dec 2024 11:20:44 -0300 Subject: [PATCH 2/3] github(release): disable provenance when building image --- .github/workflows/release.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5e06256..3fca722 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -40,6 +40,7 @@ jobs: context: . file: ./docker/prod/django/Dockerfile push: true + provenance: false tags: | ${{ env.REGISTRY }}/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:latest ${{ env.REGISTRY }}/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:${{ github.event.release.tag_name }} From 1243dddd5dbce8fd900c780b6ad4162043811e51 Mon Sep 17 00:00:00 2001 From: Herculino Trotta Date: Fri, 27 Dec 2024 11:24:56 -0300 Subject: [PATCH 3/3] github(release): cache build process --- .github/workflows/release.yml | 15 +++++++++++++++ docker/prod/django/Dockerfile | 13 +++++++------ 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3fca722..d788271 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -34,6 +34,14 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 + - name: Cache Docker layers + uses: actions/cache@v3 + with: + path: /tmp/.buildx-cache + key: ${{ runner.os }}-buildx-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-buildx- + - name: Build and push image uses: docker/build-push-action@v6 with: @@ -45,3 +53,10 @@ jobs: ${{ env.REGISTRY }}/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:latest ${{ env.REGISTRY }}/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:${{ github.event.release.tag_name }} platforms: linux/amd64,linux/arm64 + cache-from: type=local,src=/tmp/.buildx-cache + cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max + + - name: Move cache + run: | + rm -rf /tmp/.buildx-cache + mv /tmp/.buildx-cache-new /tmp/.buildx-cache diff --git a/docker/prod/django/Dockerfile b/docker/prod/django/Dockerfile index 881e98d..e022751 100644 --- a/docker/prod/django/Dockerfile +++ b/docker/prod/django/Dockerfile @@ -6,16 +6,16 @@ RUN apt-get update && apt-get install --no-install-recommends -y \ && rm -rf /var/lib/apt/lists/* COPY ./requirements.txt . -RUN pip wheel --wheel-dir /usr/src/app/wheels -r requirements.txt +RUN --mount=type=cache,target=/root/.cache/pip \ + pip wheel --wheel-dir /usr/src/app/wheels -r requirements.txt FROM node:lts-alpine AS webpack_build WORKDIR /usr/src/frontend COPY ./frontend . COPY ./app/templates /usr/src/app/templates -RUN npm config set registry https://registry.npmmirror.com/ && \ +RUN --mount=type=cache,target=/root/.npm \ npm install --verbose && \ - npm run build && \ - npm cache clean --force + npm run build FROM python:3.11-slim-buster AS python-run-stage COPY --from=webpack_build /usr/src/frontend/build /usr/src/frontend/build @@ -29,12 +29,13 @@ ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 COPY --from=python-build-stage /usr/src/app/wheels /wheels/ -RUN apt-get update && \ +RUN --mount=type=cache,target=/root/.cache/apt \ + apt-get update && \ apt-get install --no-install-recommends -y gettext && \ rm -rf /var/lib/apt/lists/* && \ pip install --upgrade pip && \ pip install --no-cache-dir --no-index --find-links=/wheels/ /wheels/* && \ - rm -rf /wheels/ ~/.cache/pip/* + rm -rf /wheels/ COPY --chown=app:app ./docker/prod/django/start /start COPY --chown=app:app ./docker/prod/procrastinate/start /start-procrastinate