#php #mysql #docker
#php #mysql #docker
Вопрос:
Я пытаюсь создать docker с mysql и apache php.
Я хочу легко подключить mysql внутри моего php-кода без необходимости поиска текущего IP-адреса контейнера mysql.
Как я мог бы связать IP-адрес mysql в моем контейнере php-apache?
Мой docker-compose
файл:
version: "3.2"
services:
apache:
build:
context: './docker/apache/'
links:
- mysql:mysqldb
depends_on:
- mysql
ports:
- "80:80"
volumes:
- ./:/var/www/html/
- ./docker/apache/virtualhost.conf:/etc/apache2/sites-enabled/000-default.conf
- ./docker/apache/php.ini:/usr/local/etc/php/php.ini
container_name: apache
mysql:
image: mysql/mysql-server:8.0
command: ['--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci','--default-authentication-plugin=mysql_native_password']
restart: always
ports:
- "18906:3306"
# volumes:
# - ./docker/mysql-dump:/docker-entrypoint-initdb.d
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: dbtest
MYSQL_USER: root
MYSQL_PASSWORD: root
MYSQL_ROOT_HOST: '%'
container_name: mysql
Мой php-скрипт:
$conn = mysqli_connect(
'172.10.0.2', // i want this to change acording to the mysql container
$user,
$pass,
$database
);
Если вам нужно что-то еще, пожалуйста, дайте мне знать.
Комментарии:
1. Вы бы использовали обычный DNS-поиск для
mysql
имени службы Compose; вероятно, вы можете напрямую настроить это имя хоста в качестве местоположения базы данных. Более подробная информация приведена в разделе Создание сетей в Compose в документации Docker. Вам не нужныlinks:
container_name:
опции or.
Ответ №1:
Попробуйте это:
$conn = mysqli_connect(
'mysql', // here goes your mysql container name
$user,
$pass,
$database
);