- .github/workflows/deploy-stg-app.yaml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
~省略~ - name: Build, tag, and push image to ECR id: build-image env: DOCKER_BUILDKIT: 1 #追加 ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} IMAGE_TAG: ${{ github.sha }} run: | echo -e "$(date)\n${IMAGE_TAG}" > public/fingerprint.txt docker build \ --cache-from=$ECR_REGISTRY/$ECR_REPOSITORY:latest --build-arg BUILDKIT_INLINE_CACHE=1 \ -f docker/stg/app/Dockerfile \ -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG \ -t $ECR_REGISTRY/$ECR_REPOSITORY:latest . docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG docker push $ECR_REGISTRY/$ECR_REPOSITORY:latest echo "::set-output name=image::$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG" |
https://qiita.com/mokemokechicken/items/39e3b04f3cbe09e5a601
actions/cache@v2
を利用するとコードが複雑になるので、image layerキャッシュを使う場合は以下の方が分かりやすいかも。
--cache-from
はlatestタグに対して適宜アクセス。 --build-arg BUILDKIT_INLINE_CACHE=1
は前回Build時のLayerを再利用。DOCKER_BUILDKIT: 1
はBuildKitが有効になる。
- .dockerignore
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
/.bundle/ /.dockerignore /.git/ /.git* /.ruby-version /README.md /config/master.key /log/ /node_modules/ /storage/ /tmp/ /vendor/bundle/ /ansible/ /terraform/ /docker/dev/ /deploy/ |
gitignoreはフルパスで参照できるが、dockerignoreは相対パスになるため、リポジトリ直下で管理するのが望ましい。これで5分くらいは改善できる。
- node_modulesが重い場合
以下を対応すれば10分はカットできる。
・npmからyarnに変更
・ yarn install --production
でdevDependenciesをインストールしないようにすること
・package-json の依存整理
Was this helpful?
0 / 0
1989年生まれのFindy/SRE。ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、オブザーバビリティ、緊急対応、AWSでのインフラ構築、Docker開発環境の提供、IaC、新技術の検証、リファクタリング、セキュリティ強化、分析基盤の運用などを担当している。個人事業主では数社サーバー保守とベンチャー企業のSREインフラコンサルティングやMENTA/TechBullで未経験者にインフラのコーチング/コミュニティマネージャーとして立ち上げと運営をしている。また、過去「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。