docker-compose.ymlのbuildディレクティブ下にはextra_hostsを書ける
$ docker compose build
時にプライベートレポジトリを参照してnpm install
したかったので色々調べたら、docker-compose.ymlのextra_hostsに設定を追加しろだとか、docker run の時に--add-hostで指定しろだとか書いているサイトが見つかりそれを参考にして、$ docker compose build
をしたのだが何度やってもうまく行かない。
数時間後に下記の2つのドキュメントを見つけた。
-
A. service.build下の extra_hostsについて https://docs.docker.jp/compose/compose-file/build.html#extra-hosts
-
B. service直下の extra_hostsについて https://docs.docker.jp/compose/compose-file/index.html#extra-hosts
Aのextra_hostsはbuild時に/etc/hostsにホスト名とIPを設定でき、Bのextra_hostsはdockerを起動した際の/etc/hostsにホスト名とIPを設定できるとのこと。
extra_hostsというディレクティブはdocker-compose.ymlのサービス内に2つ存在できるということなのだ。
なんてややこしい。
下記がdocker-compose.ymlの例
version: '3'
services:
my-service:
build:
context: ./
dockerfile: Dockerfile.nantoka
# A build内のextra_hosts docker build時に/etc/hostsに書かれる
extra_hosts:
- "somehostforbuild:162.242.195.82"
- "otherhostforbuild:50.31.209.229"
# B extra_hosts docker run時に/etc/hostsに書かれる
extra_hosts:
- "somehost:162.242.195.82"
- "otherhost:50.31.209.229"