Я часто получаю сообщение об ошибке подключения к базе данных. Он отлично работает в течение дня или двух, но нужно перезапускать docker-compose вручную каждый раз, когда появляется эта ошибка.
может видеть что-либо существенное при запуске журналов docker-compose
Что я делаю неправильно ? Вот..
DockerFile
FROM wordpress
COPY wp-config.php /var/www/html/
RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf
EXPOSE 80
докер-Compose
версия: ‘3.1’
services:
wordpress_db:
container_name: abcwordpressdb
image: mariadb:latest
restart: always
volumes:
- abcdb:/var/lib/mysql
environment:
MYSQL_USERNAME: root
MYSQL_ROOT_PASSWORD: password
ports:
- "3306:3306"
phpmyadmin:
container_name: abcphpmyadmin
image: phpmyadmin/phpmyadmin
links:
- wordpress_db:db
ports:
- "8181:80"environment:
MYSQL_USERNAME: root
MYSQL_ROOT_PASSWORD: password
PMA_HOST: wordpress_db
wordpress:
build: ./wordpress
container_name: abc_wordpress
ports:
- "80:80"volumes:
- ./wp-content:/var/www/html/wp-content/
restart: unless-stopped
volumes:
abcdb:
Контейнеры базы данных порой занимают больше времени.
Поэтому, когда ваш контейнер приложений «зависит» от соединения с базой данных. Приятно использовать опцию
depends_on:
- wordpress_db
Это позволит убедиться, что контейнер базы данных появится до того, как приложение
Нашел решение здесь
https://github.com/docker-library/mysql/issues/361
Просто запустите резервное копирование перед запуском
# Backup
docker exec CONTAINER /usr/bin/mysqldump -u root --password=root DATABASE > backup.sql
# Restore
cat backup.sql | docker exec -i CONTAINER /usr/bin/mysql -u root --password=root DATABASE
затем
docker-compose down
docker system prune --force --volumes
command: --disable-partition-engine-check
в раздел MySQL в docker-compose.ymldocker-compose up -d
установить его в фоновом режиме.