WordPress的容器只工作默认凭据

时间:2019-01-03 10:31:55

标签: wordpress docker docker-compose

我想知道docker-compose如何精确处理环境变量。

services:
  wp:
    image: wordpress:latest
    container_name: "wp"
    restart: unless-stopped
    links:
     - wpdb
    environment:
     - TZ=Europe/Berlin
     - WORDPRESS_DB_HOST=wpdb:3306
     - WORDPRESS_DB_USER=wordpress
     - WORDPRESS_DB_PASSWORD=password
     - WORDPRESS_DB_NAME=wp
    volumes:
     - ./data:/var/www/html
    labels:
     - "traefik.enable=true"
     - "traefik.backend=wp"
     - "traefik.frontend.rule=Host:MASKED"
     - "traefik.port=80"
     - "traefik.docker.network=web"
    networks:
     - internal
     - web
  wpdb:
    image: mariadb:latest
    restart: unless-stopped
    container_name: "wpdb"
    environment:
     - MYSQL_ROOT_PASSWORD=1234
     - MYSQL_USER=wordpress
     - MYSQL_PASSWORD=password
     - MYSQL_DATABASE=wp
   networks:
     - internal
   labels:
     - "traefik.enable=false"
   volumes:
     - ./sql:/var/lib/mysql
volumes:
  data:
  sql:
networks:
  web:
    external: true
  internal:

撰写文件效果很好。容器将被创建并完美运行。

但是当我更改默认值时:WORDPRESS_DB_PASSWORD =密码和MYSQL_PASSWORD =密码。

Wordpress容器引发拒绝用户访问。我还试图杀死容器和卷。

希望有人对我有所提示。

1 个答案:

答案 0 :(得分:0)

您应该执行docker-compose down -v,这将删除在volumes部分中声明的命名卷。唯一的缺点是您将第一次丢失该服务创建的所有数据。

这是我如何复制它-

  1. 使用您的撰写文件作为参考,并且第一次使用您提到的默认密码。服务正常运行,我安装了该服务并执行Ctrl+C以关闭该服务。因此,所有MYSQL数据都写入名为卷的sql中。

  2. 执行Ctrl+Cdocker-compose down时,它只会删除服务中定义的容器和网络。 不是卷。详细了解here

  3. 现在,当您更改密码并重新启动服务时,它仍然使用具有您旧密码的旧卷。

  4. 所以也使用docker-compose down -v来删除卷并尝试一下。

以下是我复制它的步骤 Ctrl + C停止所有服务,然后更新docker-compose.yml以更新密码,然后再次执行docker-compose up以获取拒绝访问错误。 Step 1 - docker-compose down or ctrl+c

也执行docker-compose down -v来清理所有卷,然后执行docker-compose up enter image description here 执行docker-compose down -v时,您将丢失先前服务创建的所有数据。谨慎使用。