Dockercomposer php项目找不到/ ping或连接到内部主机名

我正在使用compose运行一个Docker项目(在Ubuntu 14上它是值得的),我的一个容器找不到/看到/ ping /连接到我的其他容器之一。

worker容器不能ping或连接到db容器,我不能 – 为了我的生活 – 理解为什么。

这是我的项目:

泊坞窗,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 

工人/ Dockerfile

 FROM php:5.6-alpine RUN docker-php-ext-install pdo_mysql ADD redacted.php /app/redacted.php CMD ["/app/redacted.php"] 

工人/ redacted.php

 echo shell_exec('ping db -c 2'); $dbh = new PDO("mysql:host=db;dbname=redacted", "redacted", "redacted"); 

输出是:

 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 

你需要linkdocker-compose.yml 。 使用它而不是depends_on因为它也depends_on目的:

 ... worker: build: ./worker volumes: - ./worker/:/app links: - db 

更多信息: https : //docs.docker.com/compose/compose-file/#/links