使用docker-compose在wordpress上经常出现数据库连接错误

时间:2018-11-17 16:08:22

标签: php wordpress docker docker-compose mariadb

我经常收到数据库连接错误。它可以正常工作一两天,但每次遇到此错误时都需要手动重新启动docker-compose。

在运行docker-compose日志时可以看到任何重要内容 我究竟做错了什么 ?在这里。

DockerFile

FROM wordpress

COPY wp-config.php /var/www/html/

RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf

EXPOSE 80

docker-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:

2 个答案:

答案 0 :(得分:1)

数据库容器有时需要更长的时间才能出现。 因此,当您的应用程序容器“依赖”数据库连接时。很好地使用选项

depends_on:
  - wordpress_db

这将确保在应用程序之前启动数据库容器

答案 1 :(得分:0)

在这里找到了解决方案 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

然后

  1. docker-compose down
  2. 已删除的旧卷(如果没有重要数据)docker system prune --force --volumes
  3. 在docker-compose.yml的mysql部分中添加了command: --disable-partition-engine-check
  4. 使用docker-compose up -d运行它以在后台对其进行设置。