Я использую docker-compose для создания полного стека разработки.Как обращаться с IP-адресами при соединении контейнеров-докеров друг с другом с помощью компоновки докеров?
Для работы приложения требуется сервер mysql.
Сервер MySQL является внешней установкой контейнера с помощью докер-композа:
mysql:
image: mysql:5.6
volumes:
- /data/mysql:/var/lib/mysql
- ./docker/mysql.d:/etc/mysql/conf.d
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: password
Приложения имеет свой собственный Докер-compose.yml и ссылается на MySQL контейнер:
my-application:
build: . # the Dockerfile resides in the current folder
ports:
- "9180:80"
- "9543:443"
external_links:
- mysql_mysql_1:mysql
environment:
DOCKER_ENVIRONMENT: dev
DB_NAME: local_db
DB_PASS: password
DB_USER: root
DB_HOST: # how to set the mysql's IP address?
Я не могу пройти их в докер-сочинении, так как он динамичен.
Я знаю, что приложение знает о IP-адрес MySQL, поскольку у меня есть определенные переменные, заданные:
application-container$ env|grep ADDR
MYSQL_PORT_3306_TCP_ADDR=172.17.0.241
Но это не моя требуется DB_HOST
.
Могу ли я сопоставить переменную как-то с DB_HOST
или установить ее по-другому?
Почему ваш сервер mysql находится на внешнем файле docker-composer.yml? Это действительно требуется? Обычно, если у вас есть контейнеризованные приложения, которые нужно запускать вместе, вам нужно настроить только один файл docker-composer.yml. – nessuno
@nessuno Я хочу использовать этот контейнер mysql для нескольких проектов. Мне не нужны 12 серверов mysql.Кроме того, я сопоставляю данные mysql с большим жестким диском, расположенным в '/ data/mysql', поскольку база данных mysql может стать довольно массивной. Если у вас несколько экземпляров mysql, сопоставленных с одной и той же папкой, приведет к проблемам с блокировкой файловой системы. – k0pernikus
Вы можете поместить конфигурацию контейнера mysql вместе с вашим приложением, вам нужно всего лишь запустить docker-compose с флагом '--no-rereate', я думаю. После этого у вас есть только один контейнер mysql, и вы можете ссылаться на этот контейнер непосредственно в файле docker-compose.yml, используя свое имя. Таким образом, сделайте 'DB_HOST: mysql'. – nessuno