docker-compose, depends_onで/etc/hostsにホスト名が追記されない。
depends_on
を使ってアプリケーションコンテナからDBコンテナに接続したいのですが、以下のようにdocker-compose.ymlを定義しましたが、接続できません。アプリケーションコンテナに入り、/etc/hosts
を確認しましたが、dbコンテナのアドレスがありませんでした。depends_on
にコンテナを登録すると自動的にそのコンテナのリンクが/etc/hosts
に追記されるのではないのでしょうか。
参照: https://qiita.com/sivertigo/items/9baa73d922a68788402b
docker-compose.yml
version: '3'
services:
app:
build: ./../../
working_dir: /go/src/github.com/username/appname
#restart: always
env_file:
- env
depends_on:
- db
command: sh /go/src/github.com/username/appname/wait.sh db /go/bin/appname
logging:
driver: syslog
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_RANDOM_ROOT_PASSWORD: 1
#MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: dbname
MYSQL_USER: username
MYSQL_PASSWORD: password
logging:
driver: syslog
volumes:
db_data:
Dockerfile
FROM golang:alpine
ADD . /go/src/github.com/username/appname
WORKDIR /go/src/github.com/username/appname
RUN apk add --update git
RUN apk add --update mysql-client
RUN go get -u github.com/Masterminds/glide
RUN glide install
RUN go install
EXPOSE 80
wait.sh
#!/bin/sh
set -e
host="$1"
shift
cmd="$@"
until mysqladmin ping -h host --silent; do
echo 'waiting for mysql'
sleep 1
done
echo "MySQL is up - executing command"
exec $cmd
/etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2 fadc826189c0