Я использую среду Docker Compose Lamp Stack из этого репозитория github . Он работает хорошо, однако я не могу подключиться к mysql через localhost. Во время тестирования соединения с базой данных мне пришлось установить имя моего сервера на «database», чтобы он работал.
Я уверен, что это вызвано чем-то в установленном docker -compose.yml, но несмотря на попытки изменить container_name: 'database'
на имя_контейнера: 'localhost', я не смог его изменить.
Хотя это не серьезная проблема, приложение, которое я разрабатываю, не позволяет мне легко изменить его настройки имени сервера, поэтому я не могу использовать «базу данных».
Что вызывает это? Нужно ли мне полностью сбросить docker compose, чтобы изменения в docker -compose.yml вступили в силу? Какие команды для этого есть?
Изменить: Мой текущий docker -compose.yml:
version: "3"
services:
webserver:
build:
context: ./bin/${PHPVERSION}
container_name: ${PHPVERSION}
restart: 'always'
ports:
- "${HOST_MACHINE_UNSECURE_HOST_PORT}:80"
- "${HOST_MACHINE_SECURE_HOST_PORT}:443"
network_mode: host
volumes:
- ${DOCUMENT_ROOT-./www}:/var/www/html
- ${PHP_INI-./config/php/php.ini}:/usr/local/etc/php/php.ini
- ${VHOSTS_DIR-./config/vhosts}:/etc/apache2/sites-enabled
- ${LOG_DIR-./logs/apache2}:/var/log/apache2
database:
build:
context: "./bin/${DATABASE}"
container_name: 'database'
restart: 'always'
ports:
- "127.0.0.1:${HOST_MACHINE_MYSQL_PORT}:3306"
volumes:
- ${MYSQL_DATA_DIR-./data/mysql}:/var/lib/mysql
- ${MYSQL_LOG_DIR-./logs/mysql}:/var/log/mysql
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: 'phpmyadmin'
environment:
PMA_HOST: database
PMA_PORT: 3306
PMA_USER: ${MYSQL_USER}
PMA_PASSWORD: ${MYSQL_PASSWORD}
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
ports:
- '8080:80'
volumes:
- /sessions
- ${PHP_INI-./config/php/php.ini}:/usr/local/etc/php/conf.d/php-phpmyadmin.ini
redis:
container_name: 'redis'
image: redis:latest
ports:
- "127.0.0.1:${HOST_MACHINE_REDIS_PORT}:6379"
Однако, если я попытаюсь подключиться через localhost, например:
<?php
$servername = "localhost";
$username = "user";
$password = "pass";
// Create connection
$conn = new mysqli($servername, $username, $password);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>
Я получаю следующую ошибку: