如何在自动重启 docker-compose 中更改 docker-compose.yml

如何在自动重启 docker-compose 中更改 docker-compose.yml

我的docker-compose.yml包含MySQL 5.6和phpMyAdmin:

version: '3.3'
services:
  db:
    image: mysql:5.7
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 'xxxx'
    ports:
      - '3306:3306'
    expose:
      - '3306'
    volumes:
      - xxx-db:/var/lib/mysql

  phpmyadmin:
    image: phpmyadmin/phpmyadmin:latest
    environment:
      PMA_PORT: 3306
      PMA_HOST: db
      PMA_USER: xxxx
      PMA_PASSWORD: xxxx
      MYSQL_PASSWORD: xxxx
    ports:
    - "8081:80"
    restart: always
    depends_on: 
    - db

volumes:
  xxx-db:

然后我执行了

 sudo systemctl enable docker

使其在计算机启动时启动。

效果非常好!但我需要将 MySQL 升级到 5.7,所以我在配置文件中将 5.6 更改为 5.7。

突然,我注意到当我重新启动机器时以前的配置仍然运行。

CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS              PORTS                    NAMES
ed87e31b8a67        phpmyadmin/phpmyadmin   "/docker-entrypoint.…"   6 months ago        Up 35 minutes       0.0.0.0:8081->80/tcp     docker_phpmyadmin_1
6f03e022dfcd        mysql:5.6               "docker-entrypoint.s…"   6 months ago        Up 35 minutes       0.0.0.0:3306->3306/tcp   docker_db_1

当我手动终止两个 docker 容器并执行 docker-compose up -d

我得到了正确的版本:

CONTAINER ID        IMAGE                          COMMAND                  CREATED             STATUS              PORTS                               NAMES
d3006820b836        phpmyadmin/phpmyadmin:latest   "/docker-entrypoint.…"   4 hours ago         Up 3 seconds        0.0.0.0:8081->80/tcp                var_phpmyadmin_1
278cb25ece95        mysql:5.7                      "docker-entrypoint.s…"   4 hours ago         Up 3 seconds        0.0.0.0:3306->3306/tcp, 33060/tcp   var_db_1

但当我重启机器时,旧配置又回来了。当然,我试过关闭它然后再打开 :)

 sudo systemctl disable docker
 sudo systemctl enable docker

我如何“清除”旧配置?

先感谢您!

答案1

你是如何杀死这些容器的?你用 删除了它们吗docker rm <container-id>?你也可以docker container prune在停止这些不需要的容器后再尝试。

我认为如果你只是阻止/杀死了他们,那么这就是他们带着旧版本回来的原因。

相关内容