2019-1-7
AWS+Docker+PHP+AmazonSESでメール送信するまで
詳細な手順は省略。詰まった所をメモっておく
AWS の認証情報を Docker コンテナ内に配置する
AWS の認証情報は通常~/.aws/credentials
として配置し、AWS SDK もそこから情報を読み取る。
認証情報はaws configure
した際にファイルが作成されるが、コンテナ内でaws configure
を行っていない場合コンテナ内には当然ファイルが作成されない。
なので、Dockerfile で
COPY .aws/credentials /.aws/credentials
等してファイルをコピーしないと AWS SDK が使用できないので注意。
aws コマンドは docker イメージのやり取りでしか使っておらず、コンテナ外で全て実行していたので数分ハマった。
composer で require する際に、PHP のバージョン指定をしておく
composer で require する際、特に何もしなければ composer を実行した環境の PHP バージョンに従ってパッケージがインストールされる。
例えば、ホスト側が PHP5 でゲスト側が PHP7 の際にホスト側で require すると PHP5 に適応したパッケージがインストールされてしまう。
これを回避するには、「コンテナ内で作業を行う」のと「composer.json で PHP のバージョン指定を行う」等ある。
「composer.json で PHP のバージョン指定を行う」には、composer.json
に
{
"config": {
"platform": {
"PHP": "7.2.13"
}
}
}
といった感じで PHP バージョンを指定すれば OK。