Docker composer项目找不到/ ping或连接到内部主机名

时间:2016-08-18 00:50:24

标签: docker docker-compose

我正在使用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

1 个答案:

答案 0 :(得分:3)

link中需要docker-compose.yml。使用它代替depends_on,因为它还满足depends_on目的:

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

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