命令行参数无法传递至Docker容器ENTRYPOINT的问题求解
我使用Benchmark.Net库开发了一款运行基准测试的控制台应用,该应用被打包进Docker容器,属于docker-compose部署场景的一部分。对应Dockerfile的ENTRYPOINT配置如下:
FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "Benchmarks.dll", "-f", "*"]
上述参数的作用是指示Benchmark.Net库运行该程序集中的全部测试。
遇到的问题
配置的参数始终无法传递到控制台应用。我的docker-compose配置中没有设置command或entrypoint字段,仅引用了该Dockerfile。我尝试将ENTRYPOINT与CMD搭配使用也无效果,配置如下:
ENTRYPOINT ["dotnet", "Benchmarks.dll"] CMD [ "-f", "*" ]
该应用需要在CI环境运行,所以默认参数必须保证正常传递。请问我哪里操作有误?该如何解决该问题?
问题更新
我使用原生docker run命令运行容器时,参数可以正常传递,应用也能正常接收参数。但通过docker-compose运行时,应用没有任何输出。我在docker-compose.yml中的服务定义非常简单,仅引用了对应Dockerfile,配置如下:
benchmarks: build: context: ../ dockerfile: test/Benchmarks/Dockerfile args: - NUGET_SOURCE depends_on: - another.service environment: - ASPNETCORE_ENVIRONMENT=Development volumes: - ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro - ${APPDATA}/ASP.NET/Https:/root/.aspnet/https:ro
最终更新
我最初提问时遗漏了关键信息:我是在Visual Studio内部通过dscproj运行该项目的。经排查是Visual Studio为docker-compose项目的运行添加了自有规则,覆盖了命令行配置。
目前该问题暂无正规解决方案,仅存在非最优的临时解决方案。
我的问题与已有的公开问题重复,本案例关闭。
内容的提问来源于stack exchange,提问作者Yan Sklyarenko
相关产品推荐
相关产品推荐

