Выполнение docker с помощью php, а затем использовать другой контейнер в команде - PullRequest
0 голосов
/ 29 октября 2019

Я использую Docker для PHP и еще один для SQL. Также у меня есть make-файл для запуска команд в экземпляре этого контейнера. Это запись, которую я использую для выполнения команд, и я хотел бы использовать 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 голосов
/ 30 октября 2019

Docker Compose создает сеть для каждого составного файла , и вы должны присоединить свой контейнер docker run к этой сети вручную, чтобы иметь доступ к другим контейнерам в нем. Сеть обычно будет называться как-то вроде directoryname_default, основываясь на имени каталога, содержащего файл компоновки, и будет отображаться в списке docker network ls.

Вы должны запустить что-то вроде

docker run --rm --net directoryname_default ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...