当前位置: 首页 > 知识库问答 >
问题:

具有不同上下文路径的多个docker组合文件

唐修能
2023-03-14

我有2个docker compose文件需要一起运行,文件的位置如下

/home/project1/docker compose。yml公司

/home/project2/docker-compose.yml

所以很明显两个服务应该有不同的上下文路径

但当我在docker下运行compose命令时

docker compose-f/home/project1/docker compose。yml-f/home/project2/docker-compose。yml配置

我明白了,这两个服务都获得了相同的上下文路径

app:
    build:
      context: /home/project1
      dockerfile: Dockerfile
app2:
    build:
      context: /home/project1
      dockerfile: Dockerfile

如何解决这个问题?我希望我的两个服务都有自己的项目路径。

应用程序服务应具有上下文路径/主页/项目1

App2服务应该有上下文路径 /home/project2

共有3个答案

充煌
2023-03-14

似乎在使用多个docker-complace文件时,上下文是从第一个文件的位置获取的。本期将详细解释

https://github.com/docker/compose/issues/3874

全昊焜
2023-03-14

选项1:对两个docker compose文件中的上下文使用绝对路径

选项2:使用绝对路径创建docker-compose.override.yml:

version: "3"

services:
  service1:
    build:
      context: /home/project1
  service2:
    build:
      context: /home/project2

并将其包含在docker compose命令中:

docker-compose -f /home/project1/docker-compose.yml -f /home/project2/docker-compose.yml -f /home/docker-compose.override.yml config

在linux上,避免在docker compose中对基本路径进行硬编码。推翻yml,您可以使用PWD环境变量:

services:
  service1:
    build:
      context: ${PWD}/project1
  service2:
    build:
      context: ${PWD}/project2
乜飞航
2023-03-14

我发现可以运行多种服务的方法是:

1.首先借助docker build命令为所有服务创建映像

例如:在我的例子中,它是一个带有maven构建工具的java应用程序,所以我使用了命令:

mvn clean package docker:build-Denv=$ENV-DskipTests

2.在所有图像构建完成后,创建一个常见的docker compose文件,如下所示

version: '3'

services:
  service1:
    image: <service1-image>
    ports:
      - "8100:8080"
    environment:
      - TZ=Asia/Kolkata
      - MYSQL_USER=root
      - MYSQL_PASSWORD=unroot
    ulimits:
      nproc: 65535
      nofile:
        soft: 65535
        hard: 65535
  service2:
    image: <service2-image>
    ports:
      - "8101:8080"
    environment:
      - TZ=Asia/Kolkata
      - MYSQL_USER=root
      - MYSQL_PASSWORD=unroot
    ulimits:
      nproc: 65535
      nofile:
        soft: 65535
        hard: 65535
  service3:
    image: <service3-image>
    environment:
      - TZ=Asia/Kolkata
      - MYSQL_USER=root
      - MYSQL_PASSWORD=unroot
    ulimits:
      nproc: 65535
      nofile:
        soft: 65535
        hard: 65535
networks:
  default:
    external:
      name: dev

我提到mysql根、密码的方式,还可以添加环境变量。

3.然后运行下面的命令以运行所有服务

docker-compose-f docker-compose。yml向上

或在下面运行命令以运行特定服务

docker-compose-f docker-compose。yml up服务1

这对我来说很好,这将需要1次设置,但在那之后它将非常容易和快速。

 类似资料:
  • 嗨,我正在寻找一个最快的解决方案来处理csv文件的负载。 情况:我在一个文件夹中有多个csv文件,它们的标题不同 我已经对它们进行了预处理,以删除顶部的垃圾行,因此所有这些都有一个标准标头。 我想将一组CSV文件与完全相同的侦听器合并到一个新文件夹中 示例文件-1。csv 示例文件-2。csv 样本文件-3。csv 样本文件-4。csv 样本文件-5。csv 样品File-6.csv 样本文件-7

  • 问题内容: 使用上下文路径时,Spring Boot中的静态内容出现问题。即:我希望将我的应用程序部署到 当我在没有上下文路径的情况下运行应用程序时,一切正常,Spring Boot会找到并运行我的文件(来自资源/ templates /,我正在使用)和JS文件(来自资源/ static / js /),但是当我添加上下文路径时与: 要么 然后这些页面仍由JS文件显示,产生 404错误 。 我已经

  • 我有两个具有相同id的MDM配置文件,我想在同一设备上安装来自不同环境的两个不同应用程序。当我启用设备时,它将从设备中删除以前安装的应用程序。启用另一个MDM配置文件时,是否可以保存我已安装的应用程序?

  • 我在Spring Boot应用程序中使用React Axios进行API调用。 我的应用程序上下文路径是test 当我在浏览器中启动应用程序时,http://localhost:8080/test,反应页面呈现。在页面呈现中,我正在调用服务 因此,预期调用应为http://localhost:8080/test/api/events,因为test是上下文根。但是,API调用中添加了测试。 只是打电

  • 我使用Spring启动与网络通量和删除嵌入的tomcat依赖从初学者网络,我想添加基本上下文路径为我的应用程序,有什么办法我可以做??我需要这个,因为我有在kubernetes集群和重定向基于上下文路径的ingrees属性。