用php执行docker,然后在命令中使用其他容器

时间:2019-10-29 19:15:28

标签: docker

我将docker用于php,将另一个用于sql。我也有一个makefile在此容器的实例中运行命令。这是我用于执行命令的条目,我想使用我拥有的sql容器。

command:
    docker run --rm \
    --volume=${PWD}/code:/code \
    --volume=${PWD}/json:/json:rw \
    --volume=${PWD}/file:/file:rw \
    own_php:latest \
    time php /code/public/index_hex.php ${page}

如果我尝试从make文件执行此命令,则会出现以下错误。

  

SQLSTATE [HY000] [2002] php_network_getaddresses:getaddrinfo失败:   名称无法解析

这是我在项目中使用的docker-compose

version: '3'
services:
  sql:
    image: mariadb
    ports:
      - "3307:3306"
    environment:
      MYSQL_ROOT_PASSWORD: root
    volumes:
      - ./init-db:/docker-entrypoint-initdb.d
      - ./.mysql-data:/var/lib/mysql/
  crawler:
    build:
      context: './docker-base'
    depends_on:
      - sql
    volumes:
      - ./json:/json:rw
      - ./file:/file:rw
      - ./code:/code

但是,如果我使用docker-composer运行容器,并且在容器内输入命令,则执行效果会很好。

docker run --rm可以使用另一个容器吗?

1 个答案:

答案 0 :(得分:0)

Docker Compose creates a network for each compose file,您必须手动将docker run容器连接到该网络,才能访问该网络上的其他容器。网络通常会根据包含撰写文件的目录的名称命名为directoryname_default之类的名称,并且会显示在docker network ls列表中。

您应该运行类似

docker run --rm --net directoryname_default ...