DockerホストからコンテナのアプリケーションにCurlでPOSTしたら動かなかった件
Dockerの立ち上げに関しては、
- Dockerfileというファイルを作成する
- ビルドしてDockerイメージを作成する
- Dockerイメージからコンテナを作成する
- コンテナに接続してログインする
という手順を行って、
上記をやってみたあとに、
- Dockerのイメージの確認
- Dockerのコンテナの確認
- Dockerのコンテナの停止と削除
などを行っていました。
この辺りは、
コマンドで実行したことがあるので、
その辺りは、
【簡易サンプル】Dockerの基本的な手順とコマンドサンプル
こちらを参考にしてください。
今回は、
コンテナを立ち上げて、
その中のアプリケーションに対して、
ホストからcurlを使ってPOSTをしたけれど、
なぜか動かなかったので、
その時の対応を、
自分の備忘録として、
忘れないうちにメモを残しておきます。
起きた事象
ホストのアプリケーションから、
コンテナ内のアプリケーションに対して、
curlを使ってPOSTをしていました。
その時に、
- ホストからコンテナへのアクセス等は問題ない
- ホストからGETでの処理は問題ない
- ホストからPOSTでの処理が動かない
という事象が発生しました。
調査時のメモ
上記の起きた事象で、
もう少し細かく調べた時のメモ。
ホストから
コンテナ内のアプリケーションに、
curlでPOSTを実行した時、
ステータスは、
'http_code' => 200,
のように正常系で終了。
コンテナ側のアプリケーションでログを確認したところ、
何もログが表示されなかった。
実際にPOSTのデータの中身に問題あるかと考え、
CurlのPOSTで送っているデータを空にしたところ、
データを空にするとうまく挙動する
ということがわかったので、
POSTデータサイズの影響で問題が起きている
ということがわかりました。
この辺りで、
今までの知見で、
自分が実行している環境では、
post_max_size
の設定値がデフォルトの時に、
サイズ問題でエラーになったことが多かったので、
この部分の調整に取り掛かりました。
最終的な対応方法
先ほどのPOSTのサイズ問題を調整していきます。
実際に自分が動かしているPHPの環境では、
このようにサイズが初期状態でした。
動かしている内容が、
サイズ的にはこれを超えているので、
Docker内の設定を調整して反映させる
ということを行うことにしました。
設定ファイル
/usr/local/etc/php/php.ini
変更箇所
post_max_size = 20M
memory_limit = 20M
upload_max_filesize = 20M
上記に関して、
必要プロパティや他の必要なプロパティを追加。
こちらを反映させます。
反映方法としては、
Dockerを再起動することで反映させます。
再起動コマンド
docker restart [container id]
上記で、
コンテナを再起動して、
実際の設定情報を確認してみます。
うまく変わっていますね。
こちらの状況で、
再度、
元々うまく動かなかった処理を動かすと、
問題なく処理動きました。
無事に解決できました。
スキルを使って、就職/転職/副業する時のサイト
プログラミングのスキルなどを、自分なりに高めた上で、
自分のスキルをアピールして就職や転職を行い、年収をあげるか、
副業という形で、年収にプラスアルファの稼ぎを増やすことはできます。
まずはできる範囲で取り組むことで、
少しずつ、経験値も増え、自分のスキルが収入につながるのでおすすめです。