Skip to content

Commit

Permalink
remove matrix and set condition in Dockerfile
Browse files Browse the repository at this point in the history
  • Loading branch information
nemanjam committed Sep 30, 2024
1 parent 9f5b596 commit 0484967
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 32 deletions.
33 changes: 8 additions & 25 deletions .github/workflows/default__build-push-docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,6 @@ jobs:
build:
name: Build and push docker image
runs-on: ubuntu-latest
strategy:
matrix:
platform: [linux/amd64, linux/arm64]

steps:
- name: Checkout
uses: actions/checkout@v4
Expand All @@ -46,7 +42,7 @@ jobs:

- name: Docker metadata
# disable this step
# if: false
if: false
id: metadata
uses: docker/metadata-action@v5
with:
Expand All @@ -58,43 +54,30 @@ jobs:

- name: Log in to Docker Hub
uses: docker/login-action@v3
# if: ${{ github.ref_type == 'tag' }}
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}

- name: Set environment variables for each architecture
run: |
if [[ "${{ matrix.platform }}" == "linux/amd64" ]]; then
echo "SITE_URL=${{ env.SITE_URL_AMD64 }}" >> $GITHUB_ENV
elif [[ "${{ matrix.platform }}" == "linux/arm64" ]]; then
echo "SITE_URL=${{ env.SITE_URL_ARM64 }}" >> $GITHUB_ENV
fi
# Must be in separate step to reflect
- name: Debug assigned environment variable
run: |
echo "Debug: PLATFORM: ${{ matrix.platform }}, SITE_URL: ${{ env.SITE_URL }}"
- name: Build and push Docker image
uses: docker/build-push-action@v6
with:
# src dir
context: ./
# Dockerfile dir
file: ./docker/Dockerfile
# platforms: linux/amd64,linux/arm64
platforms: ${{ matrix.platform }}
# cant use matrix, must pass platforms like this
platforms: linux/amd64,linux/arm64
build-args: |
"ARG_SITE_URL=${{ env.SITE_URL }}"
"ARG_SITE_URL_ARM64=${{ env.SITE_URL_ARM64 }}"
"ARG_SITE_URL_AMD64=${{ env.SITE_URL_AMD64 }}"
"ARG_PLAUSIBLE_SCRIPT_URL=${{ env.PLAUSIBLE_SCRIPT_URL }}"
"ARG_PLAUSIBLE_DOMAIN=${{ env.PLAUSIBLE_DOMAIN }}"
push: true
tags: ${{ secrets.DOCKER_USERNAME }}/${{ env.IMAGE_NAME }}:latest
cache-to: type=inline
# cache-to: type=inline
cache-from: type=registry,ref=${{ secrets.DOCKER_USERNAME }}/${{ env.IMAGE_NAME }}:buildcache
cache-to: type=registry,ref=${{ secrets.DOCKER_USERNAME }}/${{ env.IMAGE_NAME }}:buildcache,mode=max

# disabled metadata step
# tags: ${{ steps.metadata.outputs.tags }}
# labels: ${{ steps.metadata.outputs.labels }}
# cache-from: type=registry,ref=${{ secrets.DOCKER_USERNAME }}/${{ env.IMAGE_NAME }}:buildcache
# cache-to: type=registry,ref=${{ secrets.DOCKER_USERNAME }}/${{ env.IMAGE_NAME }}:buildcache,mode=max
2 changes: 1 addition & 1 deletion docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ services:
context: .
dockerfile: ./docker/Dockerfile
args:
ARG_SITE_URL: 'http://localhost:8080'
ARG_SITE_URL_AMD64: 'http://localhost:8080'
# make separate script with localhost enabled
ARG_PLAUSIBLE_SCRIPT_URL: 'https://plausible.arm1.nemanjamitic.com/js/script.js'
# will trigger analytics
Expand Down
16 changes: 12 additions & 4 deletions docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,18 @@ RUN yarn add --ignore-engines [email protected]

COPY . .

# build time only env var
ARG ARG_SITE_URL
ENV SITE_URL=$ARG_SITE_URL
RUN echo "SITE_URL=$SITE_URL"
ARG ARG_SITE_URL_ARM64
ARG ARG_SITE_URL_AMD64

# Set SITE_URL based on the target architecture
# Docker provides TARGETARCH for this purpose
ARG TARGETARCH
RUN if [ "$TARGETARCH" = "arm64" ]; then \
export SITE_URL=$ARG_SITE_URL_ARM64; \
else \
export SITE_URL=$ARG_SITE_URL_AMD64; \
fi && \
echo "SITE_URL=$SITE_URL"

ARG ARG_PLAUSIBLE_SCRIPT_URL
ENV PLAUSIBLE_SCRIPT_URL=$ARG_PLAUSIBLE_SCRIPT_URL
Expand Down
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@
"deploy:nginx:local": "bash scripts/deploy-nginx.sh '~/traefik-proxy/apps/nmc-nginx-with-volume/website' lxc11",
"deploy:docker": "bash scripts/deploy-docker.sh arm1 '~/traefik-proxy/apps/nmc-docker' nemanjamitic/nemanjam.github.io",
"deploy:docker:local": "bash scripts/deploy-docker.sh lxc11 '~/traefik-proxy/apps/nmc-docker' nemanjamitic/nemanjam.github.io",
"docker:build:push:arm": "docker buildx build -f ./docker/Dockerfile -t nemanjamitic/nemanjam.github.io --build-arg ARG_SITE_URL='https://nmc-docker.arm1.nemanjamitic.com' --build-arg ARG_PLAUSIBLE_SCRIPT_URL='https://plausible.arm1.nemanjamitic.com/js/script.js' --build-arg ARG_PLAUSIBLE_DOMAIN='nemanjamitic.com' --platform linux/arm64 --push .",
"docker:build:push:x86": "docker buildx build -f ./docker/Dockerfile -t nemanjamitic/nemanjam.github.io --build-arg ARG_SITE_URL='https://nmc-docker.local.nemanjamitic.com' --build-arg ARG_PLAUSIBLE_SCRIPT_URL='https://plausible.arm1.nemanjamitic.com/js/script.js' --build-arg ARG_PLAUSIBLE_DOMAIN='nemanjamitic.com' --platform linux/amd64 --push .",
"docker:build:push:arm": "docker buildx build -f ./docker/Dockerfile -t nemanjamitic/nemanjam.github.io --build-arg ARG_SITE_URL_ARM64='https://nmc-docker.arm1.nemanjamitic.com' --build-arg ARG_PLAUSIBLE_SCRIPT_URL='https://plausible.arm1.nemanjamitic.com/js/script.js' --build-arg ARG_PLAUSIBLE_DOMAIN='nemanjamitic.com' --platform linux/arm64 --push .",
"docker:build:push:x86": "docker buildx build -f ./docker/Dockerfile -t nemanjamitic/nemanjam.github.io --build-arg ARG_SITE_URL_AMD64='https://nmc-docker.local.nemanjamitic.com' --build-arg ARG_PLAUSIBLE_SCRIPT_URL='https://plausible.arm1.nemanjamitic.com/js/script.js' --build-arg ARG_PLAUSIBLE_DOMAIN='nemanjamitic.com' --platform linux/amd64 --push .",
"docker:push": "docker push nemanjamitic/nemanjam.github.io",
"dc:up": "docker compose up --build --force-recreate -d"
},
Expand Down

0 comments on commit 0484967

Please sign in to comment.