我使用dockerfile成功构建,但是当我尝试从构建映像运行新容器时,出现以下错误:
我需要为解决方案做些什么?
错误:/ bin / sh:1:[dotnet,:找不到
docker run --rm -it -p 8080:80 furkaandogan/myapp:0.1
FROM microsoft/aspnetcore:1.1
ARG source
WORKDIR /app
ENV ASPNETCORE_URLS http://*:80
EXPOSE 80
COPY ./publish/myapp .
ENTRYPOINT ["dotnet", "myapp.dll"]
答案 0 :(得分:2)
Dockerfile的入口点行上有一些东西可以触发docker将其视为无效的json,而是回到shell执行字符串。它在你粘贴的内容中看起来是正确的,所以我要检查字符串末尾的字符,如智能引号或Windows换行符。
答案 1 :(得分:2)
我遇到了类似的问题。就我而言,问题出在Dockerfile中的入口点语句中。我在两个参数“ dotnet”和“ dll的URL”之间缺少一个逗号。
之前:
CMD ["dotnet" "url to dll"]
应用修复后:
CMD ["dotnet", "url for dll"]
答案 2 :(得分:0)
问题是docker ignore文件不允许复制地址
我通过将地址添加到docker ignore文件或使用允许的文件地址
来解决了这个问题旧dockerignore配置
*
!obj/Docker/publish/*
!obj/Docker/empty/
新的dockerignore配置
*
!obj/Docker/publish/*
!obj/Docker/empty/
!publish/myapp
答案 3 :(得分:0)
上面的答案很清楚,但我按照上面的操作将我的 CMD [ 'node', 'app.mjs' ]
更改为 CMD [ "node", "app.mjs" ]
,确保我添加了一个逗号,同样的事情仍然发生。
混了一会儿,我开始想,也许我需要重新构建docker文件,所以我又做了一次docker build .
。 Boom,这次成功了!
这种菜鸟的错误!就像我对 Java 存储库进行了更改但我没有重建 Java 存储库时一样,因此仍然会发生错误。