我将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
可以使用另一个容器吗?
答案 0 :(得分:0)
Docker Compose creates a network for each compose file,您必须手动将docker run
容器连接到该网络,才能访问该网络上的其他容器。网络通常会根据包含撰写文件的目录的名称命名为directoryname_default
之类的名称,并且会显示在docker network ls
列表中。
您应该运行类似
docker run --rm --net directoryname_default ...