【问题标题】:How to create a docker service without project name prefix in its name?如何创建名称中没有项目名称前缀的 docker 服务?
【发布时间】:2020-12-19 08:58:21
【问题描述】:

我刚刚开始学习 Docker 来构建微服务。我试图理解并遵循eShopOnContainers app 作为我的参考应用程序来理解所有概念。为了测试,我创建了两个 ASP.Net Web API 服务并创建了一个 docker-compose.yml 文件来测试我是否可以运行它们。我能够运行这些服务,但我注意到的一件事是服务名称不是很整齐。它们包含文件夹名称前缀。例如这里是我的 docker-compose.yml 文件的一部分

services:
  orders-api:
    image: orders-api
    build:
      context: .
      dockerfile: src/Services/Orders/Dockerfile
    ports:
      - "1122:80"

我希望当这个服务运行时,它应该被命名为 orders-api,但是它的名字变成了 micrservicestest_orders-api_1。 MicroservicesTest 是我的项目的文件夹名称。我试图找到一种解决方法,但它seems 就像这是 Docker 本身的限制。我唯一不明白的是,当我运行 eShopOnContainers 的示例应用程序时,他们的服务具有可读的名称,没有任何前缀。他们如何生成更具可读性的服务名称?

你能告诉我我在这里缺少什么吗?

【问题讨论】:

  • 如果不设置container_name docker-compose 将使用包含文件夹名称的默认值。
  • 为什么特定的容器名称很重要?
  • @DavidMaze 我想更改服务名称的原因是在它前面加上公司或产品名称的前缀。

标签: docker asp.net-core docker-compose microservices


【解决方案1】:

docker-compose 会自动为您的容器名称添加前缀。 默认情况下,前缀是您执行的目录的基本名称docker-compose up

您可以使用$ docker-compose --project-name MY_PROJECT_NAME 更改它,但这不是您想要的。

您可以使用container_name: 指定容器的名称。

services:
  orders-api:
    image: orders-api
    build:
      context: .
      dockerfile: src/Services/Orders/Dockerfile
    container_name: orders-api
    ports:
      - "1122:80"

【讨论】:

  • 我错误地假设我提到的示例应用程序没有任何前缀。如果我们不想将其指定为“docker-compose up”命令,您的答案是自定义容器名称的一个不错的选择
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-18
  • 1970-01-01
  • 1970-01-01
  • 2018-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多