我有以下DockerFile:
# Build runtime image
FROM microsoft/aspnetcore:2.0
WORKDIR /app
COPY ./entrypoint.sh ./app/
RUN chmod +x ./app/entrypoint.sh
CMD /bin/bash ./app/entrypoint.sh
ENTRYPOINT ["dotnet", "test.dll"]
Unhandled Exception: System.FormatException: Value for switch '/bin/bash ./app/entrypoint.sh' is missing.
Test | at Microsoft.Extensions.Configuration.CommandLine.CommandLineConfigurationProvider.Load()
Test | at Microsoft.Extensions.Configuration.ConfigurationRoot..ctor(IList`1 providers)
Test | at Microsoft.Extensions.Configuration.ConfigurationBuilder.Build()
Test | at Microsoft.AspNetCore.Hosting.WebHostBuilder.BuildCommonServices(AggregateException& hostingStartupErrors)
Test | at Microsoft.AspNetCore.Hosting.WebHostBuilder.Build()
Test | at Test.Program.Main(String[] args) in /app/Program.cs:line 19
Identity exited with code 139
这是什么意思:switch的值丢失了,我如何运行它?谢谢你的帮助
更新
请参阅此处:docker ASP.NET核心容器在mysql容器之后启动以获取更多信息。很抱歉有类似的第二个线程。请删除此线程
#!/bin/bash
set -e
echo -e "\nWaiting for the Database-Service..."
run_cmd="dotnet run --server.urls http://*:80"
until dotnet ef database update; do
>&2 echo "SQL Server is starting up"
sleep 1
done
>&2 echo "SQL Server is up - executing command"
exec $run_cmd
SQL Server is starting up
Test | Did you mean to run dotnet SDK commands? Please install dotnet SDK from:
Test | http://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409
正在发生的情况是,使用参数/bin/bash./app/entrypoint.sh
启动dotnet test.dll
。则test
程序尝试解析这些参数并失败。这就是例外的意义所在。
您可能必须根据要实现的目标删除cmd
或entrypoint
。如果entrypoint.sh
要接收dotnet test.dll
作为参数,则还可以交换cmd
和entrypoint
参数。
我试图让我的docker db容器在创建时自动用数据集填充数据库。根据mariadb留档,卷中有一个文件夹可用于此目的。 我设置了我的文件来镜像我在StackOverflow上找到的示例,但是仍然无法执行我的SQL脚本。以下是我的文件的相关部分: 在文件,我有一个文件: 在每次测试迭代之前,我会清理所有旧的/缓存的Docker内容: 我发现这实际上并没有删除数据库卷。运行仍会显示过去存在的卷 Do
假设我有以下Dockerfile: 命令使得在容器启动时启动。我还希望能够在容器启动时使用命令启动。但是,根据文档,Dockerfile中必须只有一个
我正在从另一个设置了特定入口点的图像创建一个图像。但是,我希望我的图像有一个默认的。如何重置入口点? 我尝试了以下Dockerfile: 不幸的是,它不像默认的入口点那样工作,因为它需要引用命令。 如何在不引用的情况下使用命令?
我的Dockerfile有一个在EntryPoint上运行的脚本。容器计划用我的代码所在的卷挂载运行,一旦容器用卷挂载运行,它需要运行几个命令。 docker run-itd-v/home/user/directory:/my-mount-dir build-container 注意:startup-script.sh包含应该在挂载的目录文件上运行的命令。
是否有一种方法可以在Dockerfile入口点中将命令作为参数执行?我正在创建一个映像,该映像应该自动运行处理器的数量,即或。 有人设法得到这种工作流程吗?
然而,这并不起作用,应用程序运行并不拾取这个挂载的属性文件,它使用的是封装在jar中的默认属性文件。但是当我进入已启动的容器并再次手动运行entrypoint cmd时,它通过拾取我挂载的文件而按预期工作。所以我想知道这是不是与mount如何使用entrypoint相关?或者我只是没有为这个案例正确地编写Dockerfile?