Docker – PostgreSQL

イメージ取得とコンテナ作成

PostgreSQLのイメージを取得。

イメージの確認。

コンテナ作成と実行。ここで、ホスト側で既にPostgreSQLが動いているので、ホスト側のポートを5431に設定している。

動作確認

ターミナルに入る。

PostgreSQLのターミナルに入る。

データベースの確認。

テーブル作成。

作成されたテーブルを確認。

レコード操作確認。

なお、今のマシンにはWindows版のPostgreSQLもインストールしているので、直接コンソールからpsqlも使える。ただしバージョンがコンテナ上のサーバーとWindows上のpsqlで異なるので警告が出る。

タイムゾーン

タイムゾーンを確認するとUTCになっている。

Docker Composeでタイムゾーンを設定するには、以下の様に環境変数をセットする。

 

Docker – PHP/Apache

手動でインストール

DockerのUbuntu+Apache環境にPHPをインストールする。

インストール中、タイムゾーンの選択を求められる。

インストール完了後、apache2をリスタート。

このあと/var/www/htmlに以下のような内容でphpinfo.phpファイルを作成。

ブラウザーからlocalhost:8080/phpinfo.phpにアクセスして以下のような内容を確認。

  • タイムゾーンはOSでAsia/Tokyoにしたが、PHPではUTCになっている
  • php.iniの場所が確認できる(/etc/php/8.1/apache2/php.ini)

DockerfileとComposeでインストール

手動でのインストールと同じ手順をDockerfileとComposeで管理する。

Dockerfileの内容は以下の通り。

  • aptでsystemctl, apache2, phpをインストール
  • apt-getでtzdataをインストール
  • /etc/timezoneに”Asia/Tokyo”を書き込む
  • dpkg-reconfigureでtzdataを再設定(noninteractiveで)

上記のDockerfileの内容でコンテナをビルド。

phpinfoのdateの項目中default timezoneがAsia/Tokyoになっているのが確認できる。

以下の内容でphp.iniをDokerfileと同じ場所に置き、DockerfileにADD ./php.ini /etc/php/8.1/apache2/php.iniを書くという方法も紹介されていたが、それがなくてもPHPのタイムゾーンは変更されていた。

ただしmbstringの方は今後設定が必要かもしれない。