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

时间:2018-07-30 13:03:07

标签: mysql docker docker-compose


通常,我在项目目录中创建一个名为“ docker”的文件夹,以便可以对不同的项目使用不同的配置。我将所有docker文件放在此文件夹中。 我已经创建了这个docker-compose文件,以与使用MySQL v5.5的项目一起使用。:

client.query(
    'SELECT tag_id FROM tag WHERE tag_name IN (?)',
    [tagArray],
    function(err, result, fields) {
        client.destroy();

        if (err) {
            throw err;
        }

        console.log(result);

        res.redirect('/');
    }
);

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

1 个答案:

答案 0 :(得分:0)

您可以在一个组合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 vars作为参数。您可以通过以下方式配置撰写:

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"

然后,您所需要做的就是“导出端口= 2222”,例如将端口设置为2222,然后使用compose。这会将端口和容器名称都设置为mysql-port-2222。