- hoge.conf.template
1 2 3 4 5 6 7 8 |
server { listen 80; server_name ${SERVER_NAME}; #環境変数追加 client_max_body_size 20M; real_ip_header X-Forwarded-For; real_ip_recursive on; keepalive_timeout 5; ~省略~ |
- Dockerfile
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
FROM nginx:1.27.2 ARG SERVER_NAME #追加 ## nginx RUN rm -rf /etc/nginx/conf.d/* COPY ./nginx.conf /etc/nginx/nginx.conf COPY ./log.conf /etc/nginx/conf.d/log.conf COPY ./hoge.conf.template /etc/nginx/conf.d/hoge.conf.template RUN envsubst '${SERVER_NAME}' < /etc/nginx/conf.d/hoge.conf.template > /etc/nginx/conf.d/hoge.conf && rm -rf /etc/nginx/conf.d/hoge.conf.template #追加 RUN ln -sf /dev/stdout /var/log/nginx/access.log RUN ln -sf /dev/stderr /var/log/nginx/error.log EXPOSE 80 CMD ["nginx", "-g", "daemon off;"] |
- stg-deploy.yml
1 2 3 4 5 6 7 8 |
- name: Build nginx image and push uses: docker/build-push-action@v6 with: context: ./config/docker/nginx/ file: ./config/docker/nginx/Dockerfile push: true tags: ${{ needs.docker-image-build.outputs.registry }}/nginx-stg:${{ needs.docker-image-build.outputs.release_tag }} build-args: SERVER_NAME=${{ secrets.STG_SERVER_NAME }} #追加 |
https://docs.docker.com/build/building/variables/
Stg環境と本番環境で NginxのDockerfile を1つで管理する場合、環境ごとに異なるパラメータを設定する必要がある。その際、envsubst と build-args を利用して設定を切り替えることが可能。また、GitHub Actionsにおいて build-args を利用する場合、値を直接指定しても環境変数として展開されない。そのため、env または secrets を利用して環境変数を設定し、build-args経由でDockerfile に渡す必要がある。
Was this helpful?
0 / 0
1989年生まれのFindy/SRE。ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、オブザーバビリティ、緊急対応、AWSでのインフラ構築、Docker開発環境の提供、IaC、新技術の検証、リファクタリング、セキュリティ強化、分析基盤の運用などを担当している。個人事業主では数社サーバー保守とベンチャー企業のSREインフラコンサルティングやMENTA/TechBullで未経験者にインフラのコーチング/コミュニティマネージャーとして立ち上げと運営をしている。また、過去「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。