From 3bc9b8501a58ea183ea5be6e5c14c69a1afa2171 Mon Sep 17 00:00:00 2001 From: SonOfLope Date: Thu, 30 May 2024 10:33:16 -0400 Subject: [PATCH 1/4] Issue #41: Adds custom dockerfile for nginx with custom endpoints for frontend and backend of an app and ports provided as env --- dockerfiles/nginx/Dockerfile | 5 +++++ dockerfiles/nginx/entrypoint.sh | 3 +++ dockerfiles/nginx/nginx.conf | 21 +++++++++++++++++++++ 3 files changed, 29 insertions(+) create mode 100644 dockerfiles/nginx/Dockerfile create mode 100644 dockerfiles/nginx/entrypoint.sh create mode 100644 dockerfiles/nginx/nginx.conf diff --git a/dockerfiles/nginx/Dockerfile b/dockerfiles/nginx/Dockerfile new file mode 100644 index 0000000..1dde6c5 --- /dev/null +++ b/dockerfiles/nginx/Dockerfile @@ -0,0 +1,5 @@ +FROM nginx:latest +COPY nginx.conf /etc/nginx/nginx.conf.template +COPY entrypoint.sh /entrypoint.sh +RUN chmod +x /entrypoint.sh && apt-get update && apt-get install -y gettext-base +ENTRYPOINT ["/entrypoint.sh"] diff --git a/dockerfiles/nginx/entrypoint.sh b/dockerfiles/nginx/entrypoint.sh new file mode 100644 index 0000000..42af4fc --- /dev/null +++ b/dockerfiles/nginx/entrypoint.sh @@ -0,0 +1,3 @@ +#!/bin/sh +envsubst "\$BACKEND_PORT \$FRONTEND_PORT" < /etc/nginx/nginx.conf.template > /etc/nginx/nginx.conf +nginx -g 'daemon off;' diff --git a/dockerfiles/nginx/nginx.conf b/dockerfiles/nginx/nginx.conf new file mode 100644 index 0000000..d9c80de --- /dev/null +++ b/dockerfiles/nginx/nginx.conf @@ -0,0 +1,21 @@ +events { } + +http { + server { + listen 80; + + location / { + proxy_pass http://frontend:${FRONTEND_PORT}/; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + + location /api/ { + proxy_pass http://backend:${BACKEND_PORT}/; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + } +} From 6eedcc916de33da4e5fd8c30e7a1436719d6000c Mon Sep 17 00:00:00 2001 From: SonOfLope Date: Thu, 30 May 2024 10:34:47 -0400 Subject: [PATCH 2/4] Issue #41: Adds pipeline to build custom images --- .github/workflows/custom-dockerfile-push.yml | 64 ++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 .github/workflows/custom-dockerfile-push.yml diff --git a/.github/workflows/custom-dockerfile-push.yml b/.github/workflows/custom-dockerfile-push.yml new file mode 100644 index 0000000..96e8eb1 --- /dev/null +++ b/.github/workflows/custom-dockerfile-push.yml @@ -0,0 +1,64 @@ +# Manual build/push fo now +name: Image build + +on: + workflow_dispatch: + inputs: + image: + required: true + description: Image a build + type: choice + options: + - nginx + tag: + required: true + description: Version a tag l'image + +env: + REGISTRY: ghcr.io/ai-cfia + +jobs: + build-on-release: + runs-on: ubuntu-latest + steps: + - name: Check Out Repo + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v3 + + - name: Log in to the Container registry + uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - 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 + id: docker_build + uses: docker/build-push-action@v5 + with: + context: ./${{ inputs.image }} + file: ./${{ inputs.image }}/Dockerfile + push: true + tags: | + ${{ env.REGISTRY }}/${{ inputs.image }}:${{ inputs.tag }} + ${{ env.REGISTRY }}/${{ inputs.image }}:latest + cache-from: type=local,src=/tmp/.buildx-cache + cache-to: type=local,mode=max,dest=/tmp/.buildx-cache-new + + - name: Refresh Cache + run: | + rm -rf /tmp/.buildx-cache + mv /tmp/.buildx-cache-new /tmp/.buildx-cache + + - name: Image digest + run: echo ${{ steps.docker_build.outputs.digest }} \ No newline at end of file From 5f09bf58c6eb9cf820c4526b6043d4fe1287f598 Mon Sep 17 00:00:00 2001 From: SonOfLope Date: Thu, 30 May 2024 10:36:08 -0400 Subject: [PATCH 3/4] Issue #41: update path for dockerfile build --- .github/workflows/custom-dockerfile-push.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/custom-dockerfile-push.yml b/.github/workflows/custom-dockerfile-push.yml index 96e8eb1..2606844 100644 --- a/.github/workflows/custom-dockerfile-push.yml +++ b/.github/workflows/custom-dockerfile-push.yml @@ -47,7 +47,7 @@ jobs: uses: docker/build-push-action@v5 with: context: ./${{ inputs.image }} - file: ./${{ inputs.image }}/Dockerfile + file: ./dockerfiles/${{ inputs.image }}/Dockerfile push: true tags: | ${{ env.REGISTRY }}/${{ inputs.image }}:${{ inputs.tag }} From b4db87f023e659f2dfaed0cff7110af5de082c6d Mon Sep 17 00:00:00 2001 From: SonOfLope Date: Thu, 30 May 2024 10:48:32 -0400 Subject: [PATCH 4/4] Issue #41: fix yaml violations --- .github/workflows/custom-dockerfile-push.yml | 90 ++++++++++---------- .github/workflows/workflow.yml | 2 + .yamllint.yml | 15 ++++ 3 files changed, 62 insertions(+), 45 deletions(-) create mode 100644 .yamllint.yml diff --git a/.github/workflows/custom-dockerfile-push.yml b/.github/workflows/custom-dockerfile-push.yml index 2606844..5f3438f 100644 --- a/.github/workflows/custom-dockerfile-push.yml +++ b/.github/workflows/custom-dockerfile-push.yml @@ -15,50 +15,50 @@ on: description: Version a tag l'image env: - REGISTRY: ghcr.io/ai-cfia + REGISTRY: ghcr.io/ai-cfia jobs: - build-on-release: - runs-on: ubuntu-latest - steps: - - name: Check Out Repo - uses: actions/checkout@v4 - - - name: Set up Docker Buildx - id: buildx - uses: docker/setup-buildx-action@v3 - - - name: Log in to the Container registry - uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1 - with: - registry: ${{ env.REGISTRY }} - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - 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 - id: docker_build - uses: docker/build-push-action@v5 - with: - context: ./${{ inputs.image }} - file: ./dockerfiles/${{ inputs.image }}/Dockerfile - push: true - tags: | - ${{ env.REGISTRY }}/${{ inputs.image }}:${{ inputs.tag }} - ${{ env.REGISTRY }}/${{ inputs.image }}:latest - cache-from: type=local,src=/tmp/.buildx-cache - cache-to: type=local,mode=max,dest=/tmp/.buildx-cache-new - - - name: Refresh Cache - run: | - rm -rf /tmp/.buildx-cache - mv /tmp/.buildx-cache-new /tmp/.buildx-cache - - - name: Image digest - run: echo ${{ steps.docker_build.outputs.digest }} \ No newline at end of file + build-on-release: + runs-on: ubuntu-latest + steps: + - name: Check Out Repo + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v3 + + - name: Log in to the Container registry + uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - 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 + id: docker_build + uses: docker/build-push-action@v5 + with: + context: ./${{ inputs.image }} + file: ./dockerfiles/${{ inputs.image }}/Dockerfile + push: true + tags: | + ${{ env.REGISTRY }}/${{ inputs.image }}:${{ inputs.tag }} + ${{ env.REGISTRY }}/${{ inputs.image }}:latest + cache-from: type=local,src=/tmp/.buildx-cache + cache-to: type=local,mode=max,dest=/tmp/.buildx-cache-new + + - name: Refresh Cache + run: | + rm -rf /tmp/.buildx-cache + mv /tmp/.buildx-cache-new /tmp/.buildx-cache + + - name: Image digest + run: echo ${{ steps.docker_build.outputs.digest }} diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml index 9876eff..b2981a3 100644 --- a/.github/workflows/workflow.yml +++ b/.github/workflows/workflow.yml @@ -16,6 +16,8 @@ jobs: yaml-check: uses: ai-cfia/github-workflows/.github/workflows/workflow-yaml-check.yml@main + with: + config-file-path: '.yamllint.yml' sh-check: uses: diff --git a/.yamllint.yml b/.yamllint.yml new file mode 100644 index 0000000..b2c8f31 --- /dev/null +++ b/.yamllint.yml @@ -0,0 +1,15 @@ +# Based on https://github.com/kubernetes-sigs/kubespray +extends: default +ignore: | + .git/ +rules: + indentation: + spaces: 2 + indent-sequences: consistent + line-length: disable + truthy: disable + document-start: false + comments-indentation: false + comments: + min-spaces-from-content: 2 + level: error