2
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

docker-composeの大切な変数には環境変数を設定しよう!

Last updated at Posted at 2020-01-25

はじめに

こんにちは。早速ですが、docker-composeにDBのimageを書いてる人...。
環境変数は使用していますか??

個人が作成しているポートフォリオや個人のWebアプリケーションなどでGitでバージョン管理されている方が多いと思いますが、docker-composeに『直で大切な情報を載せるはあまり良くはない...』ですよね。

そんな時に環境変数を用いて、大切な情報はgitignoreしつつ、一括で管理してしましましょう!!

ではdocker-composeにて楽々できる環境変数の設定の仕方をご紹介します。

ディレクトリの構成図を見ていく

ファイルは2つのみの単純な構成図ですが、載せておきます。笑

ディレクトリ構成図
sample-project
      ├ .env # 環境変数を設定するファイル
      └ docker-compose.yml

docker-composeと環境変数の設定ファイル.envは同ディレクトリに置かなければいけません。

まず.envの中身を書く

今回は僕がPostgreSQLを使っているので、PostgreSQLで書きますが、設定したい変数を書けばいいだけなので、簡単にカスタムできます。

注意点

必ずファイル名は.envという名前にしてください。違う名前でも実装できますが少し設定方法が変わってきてしまいます...
それについては後半で紹介しますね(/・ω・)/ コチラで後半まで飛べます

.env
POSTGRES_USER=postgres
POSTGRES_PASSWORD=passworddayo

docker-composeの中身を書く

こんなDBのコンテナのみで使うことなど無いかもしれませんが、余計な情報はなしで書きます。

docker-compose.yml
version: "3"
services: 
    db:
        image: postgres
        environment:
            - POSTGRES_USER
            - POSTGRES_PASSWORD
        ports:
            - "5432:5432"

たったこれだけで実装可能です。

ですがここにたどり着くまで様々な落とし穴があったりします。笑

僕的落とされたポイント

その1→ファイル名は.envにする件について

どうやらdocker-composeの標準装備で同ディレクトリのenvファイルで定義したものを参照してくれるみたいです。公式ドキュメント*1に書かれていことが少なすぎて、『情報量!!!』と叫びましたね。*1 docker docsへはコチラ

.envを指定しない方法

これは簡単に言うと、任意のファイル名を指定して、そのファイル内の定義したもの全てをenvironmentに入れるパターンです。
この方法については、他の方がまとめてくれている記事を紹介します*2↓
*2 docker-composeでenv_fileとenvironmentを同時に設定する際の注意点(Qiita)

その2→environmentに書くのそれだけ?問題

docker-compose.ymlを見ていただくと、evironmentにPOSTGRES_USERとPOSTGRES_PASSWORDを書いているだけですよね。笑
元々PostgreSQLの方でevironmentに設定しなければいけない変数が決まっているのですが、.envで設定した名前をdocker-compose.ymlで代入するのではなく、直でdocker-compose.ymlに書いてるのです。笑

ですがその方が『環境変数が個別に直感的に設定できる』という意味で、ファイル名を指定してファイル全体を代入するのではなく、変数を指定するやり方が僕的には良いと思ったので、.envの設定方法を紹介いたしました。

さいごに

最後まで読んでいただきありがとうございました。
間違っている点やシンプルな感想などでもございましたら、お気軽にコメントください!!

実はDjangoにて環境変数を設定する方法をメインに書きたかったのですが、Dockerありきの方法になってしまうんです。なのでそれはまた今度ということで。

DjangoやAWS,Dockerなどのバックエンドを勉強していたり、機械学習にも少し手を出しているわたくしの姿を発信しているTwitterがあるので、もし良ければ...@heacet43

参考文献

*1 Declare default environment variables in file | Docker Documentation [https://docs.docker.com/compose/env-file/]
*2 docker-composeでenv_fileとenvironmentを同時に設定する際の注意点 [https://qiita.com/zawawahoge/items/eeaf2833583949524023]

2
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?