Попытка установить sh соединение между mysql и веб-сервером, но с помощью Dockerfile выдается ошибка - PullRequest
0 голосов
/ 28 февраля 2020

Я пытаюсь соединить два сервера, один - база данных (mysql), а второй - веб-сервер (httpd). В docker изображение создается с помощью dockerfile, создается два контейнера и выполняется код в обоих. оба работают, интерфейсный код веб-сервера работает нормально, когда я пытался ввести данные, получил ошибки. Я посмотрел в / var / log / httpd / error_log ---> mysql соединение не может найти "данные" хоста. Я хочу знать, как определить хост базы данных на веб-сервере? Из-за проблемы подключения 2 Dockerfile оба IP-адреса в одном и том же su bnet. В чем основная проблема?

1 Ответ

0 голосов
/ 28 февраля 2020

Контейнеры должны находиться в одной сети docker, а имена хостов являются именами служб (по умолчанию).

Я советую использовать docker -compose , который предназначен чтобы запустить несколько контейнеров со ссылками между ними.

Априори, я бы сделал что-то подобное в моем docker -compose.yml:

version: '2.4'

services:

  db:
    build:
      context: .
      dockerfile: db.dockerfile
    environment:
      - MYSQL_ROOT_PASSWORD=foo

  web:
    build:
      context: .
      dockerfile: web.dockerfile

Затем введите docker-compose up -d. Наконец, из веб-контейнера вы сможете добраться до хоста 'db'.

Если вы хотите работать только с dockerfiles, это также возможно, если мое первое предложение этого поста будет проверено. По умолчанию контейнеры находятся в сети bridge, поэтому ваши контейнеры, вероятно, находятся в той же сети, но вы должны связать их, чтобы затем можно было обмениваться данными. После того, как вы запустили контейнер db, вы должны запустить контейнер web со следующей опцией:

docker run ... --link <db_container_name>:<db_host_name_in_web_container> ...

Таким образом, вы сможете достичь db с web.

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