
Golang + PostgreSQLの開発環境をDockerで構築
はじめに
バックエンドをGolang(Go言語)とPostgreSQLで開発する機会があったので、そのときに作成したDockerによる開発環境について記事にしたいと思います。
ホストのマシンで環境を用意してもよいのですが、環境を汚したくないのでDockerで構築しました。さくっと実行環境が作れるのでDockerは本当に重宝します。🙏
リポジトリを用意しているので、興味のある方はご覧ください。README.md
に手順を記載しています。
🌐 https://github.com/nemuvski/dev-golang-psql
このまま終わってもよい感じですが... とはいえ、何も説明しないのもあれなので、内容について軽く触れたいと思います。
設定ファイル
ディレクトリ構成は次のようになっています。
|-- .gitignore
|-- README.md
|-- docker
| |-- app
| | `-- Dockerfile
| |-- pgadmin4
| | `-- .env.example
| `-- postgresql
| |-- .env.example
| `-- Dockerfile
|-- docker-compose.yml
`-- src
`-- main.go
.gitignore
と README.md
については説明は省略します。
🌐 https://github.com/nemuvski/dev-golang-psql をご参照ください。
srcディレクトリ
src/
にはGoのコードを格納します。ここでは main.go
しか入れていませんが、好きなように変えていただければと思います。
go.mod
といったファイルは src/
の1つ上の階層におかれる想定です。
docker/appディレクトリ
ここにはGolangの実行環境のイメージ定義ファイル Dockerfile
を格納しています。
Dockerfileの内容はとてもシンプルにしていて、作業ディレクトリの設定とgitコマンドのインストールしかしていません。
もし、EchoやGinなどを使って、Webアプリ・REST APIを開発するといった場合は、コンテナ外からアクセスできるようにEXPOSEで利用するポートを設定しておきましょう。
Goのバージョンを変えたい場合はFROMにあるイメージのタグを編集してください。軽量なAlpineベースのイメージを利用するのがおすすめです。タグの内容はGolangイメージのDocker Hubで確認できます。
docker/pgadmin4ディレクトリ
pgAdmin4はPostgreSQLをGUIで操作できるクライアントツールです。
このディレクトリには .env.example
を入れています。実際にコンテナを作る際はこのファイルをコピーして .env
で保存してください。
ファイルの内容は、pgAdmin4にログインするアカウントのメールアドレスとパスワードを記述しています。
もし、pgAdmin4が不要という場合は後述する docker-compose.yml
からコンテナの定義を削除してください。
docker/postgresqlディレクトリ
Dockerfile
と .env.example
を格納しています。
.env.example
も同じように .env
という名前でコピーして内容を記入してください。
Dockerfile
ではロケールの設定をしています。これについては公式イメージの説明に書かれていますので、気になる方はご覧ください。
docker-compose.yml
コンテナの設定について記述しています。もし使われる際は好きなようにカスタマイズしまくっちゃってください。😉
コンテナはPostgreSQL、pgAdmin4、Golang実行環境の3つが立ちあがります。DBデータとpgAdmin4設定は残したいのでボリュームで永続化するようにしています。
特筆する点はないですが、1つだけ。コンテナごとにログドライバの設定をしていますが、変えていただいて問題ないです。
max-sizeとmax-fileを指定しないと延々とログが溜まり続けると容量圧迫に繋がるのが嫌なのと、ローカルの開発環境であれば直近のログがあればよいと考えるので指定するようにしています。開発する内容にもよるかと思いますが、3〜5MB分のログで十分かと思います。