お世話になります。
困っていること
CodeDeployのAfterInstallにてdocker-compose runの実行が終わらず、タイムアウトまで実効し続け、デプロイが成功しない
前提
EC2(Djangoサーバー)にdockerとdocer-composeを入れ、GithubからのソースをCodeDeployで送っています。
appspec.ymlは下記のようにしており、BeforeInstall->Install(コードの取得)->AfterInstallで回しています。
after.sh内のpython manage.py migrate
している箇所の実行が終わらないことまでは把握しておりますが、失敗のログが出ないままで何が原因なのかわかりません。
尚、migrateはRDSに対して行われます。
- appspec.yml
yml
1version: 0.0 2os: linux 3files: 4 - source: / 5 destination: /home/ec2-user/hoge_server 6hooks: 7 BeforeInstall: 8 - location: scripts/before.sh 9 timeout: 300 10 runas: ec2-user 11 AfterInstall: 12 - location: scripts/after.sh 13 timeout: 900 14 runas: ec2-user
- after.sh
bash
1#!/bin/bash 2cd /home/ec2-user/hoge_server 3 4/usr/local/bin/docker-compose build 5/usr/local/bin/docker-compose run --rm web python manage.py migrate 6/usr/local/bin/docker-compose up -d
タイムアウトの際のログは下記です。
done以降何も出ず、起動したコンテナは終了したものとして残ります。
[stderr]Creating network "hoge_server_default" with the default driver [stderr]Creating hoge_server_web_run ... [stderr]Creating hoge_server_web_run ... done
確認したこと
- EC2にsshし同様のコマンドを実行したところ問題なくdocker-compose runコマンドは通ります
- python manage.py migrateでなく、python manage.py showmigrationsにしても同様なので、migrateの問題ではなさそうです
- 終了したコンテナを立ち上げてコンテナに入って同様のコマンドを実行しても特にエラーが出ず、migrateやshowmigrationsは実行可能
- インスタンス・dockerエンジンの再起動実施済
- df・freeコマンドでストレージとメモリは十分に確保されていることを確認
- docker logsでも何も出ない
- ymlのrunasをrootにしても同様
- docker-compose runの部分を削除するとデプロイは成功する
バージョン
- Docker version 20.10.4,
- docker-compose version 1.29.2
- python:3.7.10
あなたの回答
tips
プレビュー