Docker使用不同的参数运行图像的多个实例

Docker使用不同的参数运行图像的多个实例,docker,docker-compose,dockerfile,asp.net-core-2.0,Docker,Docker Compose,Dockerfile,Asp.net Core 2.0,我是docker的新手,所以这听起来可能有点基本问题 我有一个VS.NETCore2控制台应用程序,它能够接受一些命令行参数并提供不同的服务。因此,在正常的命令提示符下,我可以运行 c:>dotnet myapplication.dll 5000。\mydb1.db c:>dotnetmyapplication.dll 5001。\mydb2.db 这将在端口5000和5001上创建此应用程序的2个实例 现在,我想为这个应用程序创建一个docker容器,并希望运行该映像的多个实例,并且能够将此参

我是docker的新手,所以这听起来可能有点基本问题

我有一个VS.NETCore2控制台应用程序,它能够接受一些命令行参数并提供不同的服务。因此,在正常的命令提示符下,我可以运行

c:>dotnet myapplication.dll 5000。\mydb1.db
c:>dotnetmyapplication.dll 5001。\mydb2.db

这将在端口
5000
5001
上创建此应用程序的2个实例

现在,我想为这个应用程序创建一个docker容器,并希望运行该映像的多个实例,并且能够将此参数作为命令行传递给
docker run
命令。但是,我无法看到如何在
docker compose.yml
Dockerfile

DockerFile

FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 80

# ignoring some of the code here
ENTRYPOINT ["dotnet", "myapplication.dll"]
docker Compose.yml

version: '3.4'
services:
  my.app:
    image: ${DOCKER_REGISTRY}my/app
    ports:
     - 5000:80
    build:
      context: .
      dockerfile: dir/Dockerfile

我试图避免为每个命令行参数组合创建多个映像。那么有可能实现我想要的吗?

Docker容器由一个入口点和一个命令启动;当容器实际启动时,它们只是连接在一起。如果
Dockerfile
中的入口点的结构类似于单个命令,则
Dockerfile
中的CMD或
docker compose.yml中的
命令:
包含参数

这意味着您应该能够将您的
docker compose.yml
设置为:

services:
  my.app1:
    image: ${DOCKER_REGISTRY}my/app
    ports:
     - 5000:80
    command: [80, db1.db]
  my.app2:
    image: ${DOCKER_REGISTRY}my/app
    ports:
     - 5001:80
    command: [80, db2.db]
(作为旁注:如果程序的一个选项是要侦听的端口,则需要与
端口:
规范中的第二个端口匹配,在我的示例中,我选择让两个端口都侦听“正常”HTTP端口,并使用
端口:
设置在主机上重新映射。如果需要,一个容器可以到达另一个容器,如
http://my.app2/
在默认HTTP端口上。)