Reputation: 11595
I'm running a docker project using compose (on Ubuntu 14 for what it's worth) and one of my containers can't find/see/ping/connect to one of my other containers.
The worker
container can't ping or connect to the db
container, and I can't - for the life of me - understand why.
This is my project:
docker-compose.yml
version: '2'
services:
web:
build: ./web
depends_on:
- db
volumes:
- ./web/:/app/src
ports:
- "80:80"
- "443:443"
db:
build: ./db
volumes:
- "./.data/db:/var/lib/mysql"
- ./db/init:/docker-entrypoint-initdb.d
environment:
MYSQL_DATABASE: redacted
MYSQL_USER: redacted
MYSQL_PASSWORD: redacted
worker:
build: ./worker
volumes:
- ./worker/:/app
depends_on:
- db
worker/Dockerfile
FROM php:5.6-alpine
RUN docker-php-ext-install pdo_mysql
ADD redacted.php /app/redacted.php
CMD ["/app/redacted.php"]
worker/redacted.php
echo shell_exec('ping db -c 2');
$dbh = new PDO("mysql:host=db;dbname=redacted", "redacted", "redacted");
The output is:
worker_1 | ping: bad address 'db'
worker_1 | Warning: PDO::__construct(): php_network_getaddresses: getaddrinfo failed: Try again in /app/redacted.php on line 29
worker_1 | SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Try again
Upvotes: 1
Views: 3079
Reputation: 1640
You need link
in your docker-compose.yml
. Use it instead of depends_on
because it also fullfil depends_on
purpose:
...
worker:
build: ./worker
volumes:
- ./worker/:/app
links:
- db
More informations: https://docs.docker.com/compose/compose-file/#/links
Upvotes: 3