DockerホストからコンテナのアプリケーションにCurlでPOSTしたら動かなかった件

Dockerの立ち上げに関しては、

  1. Dockerfileというファイルを作成する
  2. ビルドしてDockerイメージを作成する
  3. Dockerイメージからコンテナを作成する
  4. コンテナに接続してログインする

という手順を行って、

上記をやってみたあとに、

  • 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]

上記で、

コンテナを再起動して、

実際の設定情報を確認してみます。

うまく変わっていますね。

こちらの状況で、

再度、

元々うまく動かなかった処理を動かすと、

問題なく処理動きました。

無事に解決できました。

スキルを使って、就職/転職/副業する時のサイト

プログラミングのスキルなどを、自分なりに高めた上で、

自分のスキルをアピールして就職や転職を行い、年収をあげるか、

副業という形で、年収にプラスアルファの稼ぎを増やすことはできます。

まずはできる範囲で取り組むことで、

少しずつ、経験値も増え、自分のスキルが収入につながるのでおすすめです。

おすすめ書籍

広告

おすすめ記事