如何在docker compose文件中组织不同mysqld版本的不同项目的mysql卷?

vu8f3i0k  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(328)

通常,我会在项目目录中创建一个名为“docker”的文件夹,这样我就可以对不同的项目使用不同的配置。我把所有docker文件都放在这个文件夹里。我创建了这个docker compose文件来处理一个使用mysql v5.5的项目

version: "3"
services:
    mysql:
        image: mysql:5.5
        ports:
          - 13307:3306
        environment:
          - MYSQL_ROOT_PASSWORD=123
        volumes:
          - mysqldata:/var/lib/mysql
        container_name: mysql

volumes:
  mysqldata:
    driver: "local"

现在我需要创建另一个使用mysql v.5.6的项目
那么对于这个项目,应该如何查看相同的文件呢?特别是卷、服务名和容器名。
谢谢。

oyjwcjzk

oyjwcjzk1#

您可以在一个yaml定义中使用多个服务和卷。这样地: version: "3" services: mysql-v1: image: mysql:5.5 ports: - 13307:3306 environment: - MYSQL_ROOT_PASSWORD=123 volumes: - mysqldata-v1:/var/lib/mysql container_name: mysql-v1 mysql-v2: image: mysql:5.6 ports: - 13308:3306 environment: - MYSQL_ROOT_PASSWORD=123 volumes: - mysqldata-v2:/var/lib/mysql container_name: mysql-v2 volumes: mysqldata-v1: driver: "local" mysqldata-v2: driver: "local" 您可以按自己的喜好配置映像、容器名称和卷。
另一种方法是使用env变量作为参数。您可以通过以下方式配置compose: version: "3" services: mysql: image: mysql:5.5 ports: - ${port}:3306 environment: - MYSQL_ROOT_PASSWORD=123 volumes: - mysqldata:/var/lib/mysql container_name: mysql-port-${port} volumes: mysqldata: driver: "local" 然后您需要做的就是“export port=2222”,例如将端口设置为2222,然后使用compose。这将把容器的端口和名称都设置为mysql-port-2222。

相关问题