Kir*_*ran 4 docker dockerfile docker-compose asp.net-core-2.0
我是 docker 新手,所以这可能听起来有点基本问题。
我有一个 VS.Net core2 控制台应用程序,它能够接受一些命令行参数并提供不同的服务。所以在正常的命令提示符中我可以运行类似的东西
c:>dotnet myapplication.dll 5000 .\mydb1.db
c:>dotnet myapplication.dll 5001 .\mydb2.db
这会在端口5000&上创建此应用程序的 2 个实例5001。
我现在想为此应用程序创建一个 docker 容器,并希望运行该映像的多个实例,并能够将此参数作为命令行传递给docker run命令。但是我无法看到如何在docker-compose.yml或Dockerfile
文件
FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 80
# ignoring some of the code here
ENTRYPOINT ["dotnet", "myapplication.dll"]
Run Code Online (Sandbox Code Playgroud)
docker-Compose.yml
version: '3.4'
services:
my.app:
image: ${DOCKER_REGISTRY}my/app
ports:
- 5000:80
build:
context: .
dockerfile: dir/Dockerfile
Run Code Online (Sandbox Code Playgroud)
我试图避免为每个命令行参数组合创建多个图像。那么有可能实现我正在寻找的东西吗?
Docker 容器以一个入口点和一个命令启动;当容器实际启动时,它们只是简单地连接在一起。如果 中的 ENTRYPOINT 的Dockerfile结构类似于单个命令,则Dockerfile或command:中的CMDdocker-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]
Run Code Online (Sandbox Code Playgroud)
(附带说明:如果程序的选项之一是要侦听的端口,则这需要与ports:规范中的第二个端口相匹配,在我的示例中,我选择让两者都侦听“正常”HTTP端口并使用ports:设置将其重新映射到主机上。如果需要,一个容器可以访问另一个容器,就像http://my.app2/在默认 HTTP 端口上一样。)
| 归档时间: |
|
| 查看次数: |
1595 次 |
| 最近记录: |