diff --git a/.github/workflows/custom-dockerfile-push.yml b/.github/workflows/custom-dockerfile-push.yml new file mode 100644 index 0000000..5f3438f --- /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: ./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 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; + } + } +}