Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我应该把docker-compose.yml放在哪里_Docker_Docker Compose_Dockerfile_Apache Zookeeper - Fatal编程技术网

我应该把docker-compose.yml放在哪里

我应该把docker-compose.yml放在哪里,docker,docker-compose,dockerfile,apache-zookeeper,Docker,Docker Compose,Dockerfile,Apache Zookeeper,当我从docker hub中提取图像时。有时,我希望以多容器的方式运行图像。所以我选择使用docker compose。例如,我会运行在。我将新建一个名为docker-compose.yml的文件,运行docker compose并等待它完全初始化 我的问题是,我应该把docker-compose.yml文件放在哪个合适的目录中?我问自己同样的问题:把我的docker-compose.yml文件放在哪里 我决定按以下方式进行: 一个用于docker compose.yml的Repo以及部署脚本

当我从docker hub中提取图像时。有时,我希望以多容器的方式运行图像。所以我选择使用docker compose。例如,我会运行在。我将新建一个名为docker-compose.yml的文件,运行docker compose并等待它完全初始化


我的问题是,我应该把docker-compose.yml文件放在哪个合适的目录中?

我问自己同样的问题:把我的
docker-compose.yml文件放在哪里

我决定按以下方式进行:

  • 一个用于docker compose.yml的Repo以及部署脚本(在我的例子中是Jenkins管道)
  • 每个微服务一个Repo以及Dockerfile及其构建逻辑(构建的映像被推送到私有docker注册表)
为什么?

  • docker compose.yml
描述了一个系统(微服务的组合)及其部署方式
  • 微服务应该独立于系统基础设施
  • 可能有多个系统(微服务的不同组合)具有第二个
    docker compose.yml
    (和Repo)
  • 然而,当然也有合理的例外。
    假设您正在部署一个定制的数据库和一个管理工具(例如定制的mariadb和adminer),那么大多数东西可能都存在于一个存储库中。

    无关紧要。一个好的方法是创建一个项目目录,在其中为每个docker compose项目创建一个新目录。例如:
    project/app-mysql/
    ,在那里你可以保存你的
    docker-compose.yaml
    (包括你的app+mysql的设置)。这就是我们使用它的方式。@lvthillo,在这种情况下,您的git存储库目录应该在哪里?在
    app mysql/
    (每个app xxx有一个)或
    project/
    ?@Kwadz中的所有项目只有一个git repo,这个问题对我来说并不完全清楚,但我会将我的docker-compose.yml放在git repo的根目录中,并在可能的情况下创建单独的repo。如果不可能,我会使用一个带有子文件夹的Git root,并在每个子目录中放置一个DOCK-COMPULT.YML,也可以考虑使用Git子模块。我发现自己有一个带有docker-compose.yml的“超级项目”,用于构建整个开发环境,然后在一个名为/services/I的文件夹中,我运行的每个服务都有子模块,可以管理它们的版本控制。这样,超级项目可以有一个“功能a”分支,并将正确的子模块指向成功实现“功能a”所需的任何提交。