1
3

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 3 years have passed since last update.

Dockerの設定ファイルを読む

Last updated at Posted at 2021-07-21

この記事の内容

今業務で触っているアプリに色々不具合が出てきたのですが、土台になっているDocker(←他の人が設定)がよくわかリませんでした...:sweat_smile:そこで、ソースコードを読み解きながら改善の方法を探りました。本記事はその時に調べた内容のメモです。

なお、筆者のレベル感はCIツールのyamlは記事を参照しながらギリギリ構築でき、dockerは基礎書籍を1回読んだ程度です。

yamlの読み方

まず、yamlがなかなか読めませんでした...。新しく覚えたものはこちらに記しますが、それ以外は拙著ですがこちらをご覧ください。

&(アンパサンド)

アンカーというらしいです。&でマークをつけて、*で後で参照できます。
こんな感じで出てきました。

app: &app
  # 色々な設定が続く
webpack:
 <<: *app

上記の設定では、webpackのビルドが始まる前に、appの諸々の設定を読み込んでいます。

<<

読み方わかりませんでした...^^;
連想配列をマージする時にこの書き方をするらしいです。

app: &app
  # 色々な設定が続く
webpack:
 <<: *app

上記の例では、app内の諸々の設定を webpack下にマージしていますね。
▼参考記事

コマンドの読み方

docker-compose.yml内に書かれていた、様々なコマンドの意味も調べました。
↓こちらの公式ドキュメント(?)の力も大きいです。

また、Dockerコマンドを丁寧にまとめてくださっている人もいました。これを見れば他の記事本とんどいらないんじゃないかと思います。

build

build: .

Dockerfile のあるディレクトリのパスを指定します。ここでは、カレントディレクトリにDockerfileがあるので、値に.(ドット)を使用しています。

depends_on

コンテナの作成順序を決めます。例えばこのように書かれていたら

app:
  # 諸々の設定
  depends_on:
    - webpack
    - db

appの諸々の設定はwebpackdbの後に実行されます。

env_file

外部ファイルに書かれた環境変数をコンテナ内に取り込みます。

env_file: .env

例えば、↑上記の設定では.envの中に書かれている環境変数をコンテナ内に取り込みます。

environment

コンテナ内で使用する環境変数を設定します。

environment:
  - LANG=C.UTF-8

例えば、↑上記の設定では環境変数LANGUTF-8を設定します。

image

使用するdockerイメージです。ローカルになければdockerhubからイメージがpullされます。

image: postgres:9.6

↑上記の例では、postgres:9.6のイメージが使用されています。

stdin_open: true

tty: true

2つまとめて紹介します。

stdin_open: true
tty: true

stdin_openとは標準入出力とエラー出力をコンテナに結びつける設定です。
ttyとは、擬似端末(キーボードによる入力)をコンテナに結びつける設定です。
ソースはこちら。キリの良いところでまた振り返ろうと思います。

volumes

これは、先の引用記事によると

パスをボリュームとしてマウントします。オプションとしてホスト側のパスを指定(ホスト:コンテナ)したり、アクセスモードを指定します(ホスト:コンテナ:ro)。

ということのようです。例えば

volumes:
 - .:/usr/src/app:cached

だと、イメージ内の.(カレントディレクトリ)に、Dockerの/usr/src/appを紐づけます。そして:cachedはオプションです。

と書かれていて、公式ドキュメントの記載もなんだかお手上げだったので、後日ゆっくり理解することにします。

working_dir

特定のサービスの作業用ディレクトリを指定します。例えば

app:
 working_dir: /usr/src/app

とあったら、appが動作するディレクトリは/usr/src/appになります。

...以上でdocker-compose.yml内のわからない表現は制覇です!
これで、設定ファイルが読めます!やったー!!:v:

で、結局不具合は直ったの?

...直りませんでした:joy:

読み解いた後、さらに記述に関する知識が必要だったので。。。。
引き続きデバッグを頑張ろうと思います!!:muscle:

1
3
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
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?