https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/bind-mounts.html
- app/Dockerfile
1 2 3 4 5 6 7 8 9 10 11 12 |
FROM php:8.3-fpm-alpine ENV APP_ROOT /var/www/hoge WORKDIR $APP_ROOT ~省略~ RUN mkdir -p $APP_ROOT COPY --chown=nginx:nginx ./ $APP_ROOT ~省略~ VOLUME [ "/var/www/hoge" ] |
- terraform/files/task-definitions/app.json
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
[ { "image": "xxx.dkr.ecr.ap-northeast-1.amazonaws.com/nginx", "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "/ecs/nginx", "awslogs-region": "ap-northeast-1", "awslogs-stream-prefix": "ecs" } }, "cpu": 512, "memory": 1024, "networkMode": "awsvpc", "name": "nginx", "essential": true, "volumesFrom": [ #追加 { "sourceContainer": "app", "readOnly": true } ], "portMappings": [ { "hostPort": 80, "containerPort": 80, "protocol": "tcp" } ], "command": [ "/usr/sbin/nginx", "-g", "daemon off;" ] }, ~省略~ |
アプリケーションコンテナ内でソースコードが管理されている場合、Nginxコンテナからそのソースコードを参照するためには、バインドマウントで解決することができる。アプリケーションのDockerfile内でVOLUME命令と、共有したいディレクトリを指定。その後、タスク定義においてNginxコンテナでボリュームを参照するように設定することで、コンテナ間でディレクトリ共有が可能。
他にもEFSを利用する方法があるが、コストが高く、パフォーマンスが悪いデメリットがある。
Was this helpful?
0 / 0
1989年生まれのFindy/SRE。ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、オブザーバビリティ、緊急対応、AWSでのインフラ構築、Docker開発環境の提供、IaC、新技術の検証、リファクタリング、セキュリティ強化、分析基盤の運用などを担当している。個人事業主では数社サーバー保守とベンチャー企業のSREインフラコンサルティングやMENTA/TechBullで未経験者にインフラのコーチング/コミュニティマネージャーとして立ち上げと運営をしている。また、過去「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。