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。