【发布时间】:2017-12-23 22:31:18
【问题描述】:
它出现在dockerfile 中的RUN 看不到我的卷目录,而ENTRYPOINT 可以。
这是一个带有问题的dockerfile 和docker-compose.yml 示例:
FROM microsoft/dotnet:2.0-sdk
EXPOSE 5000
ENV ASPNETCORE_ENVIRONMENT=Development
WORKDIR /src/testing
RUN dotnet restore
ENTRYPOINT ["dotnet", "run", "--urls=http://0.0.0.0:5000"]
docker-compose.yml:
version: "3.4"
services:
doctnetcore-api-project:
build: ./api/
container_name: doctnetcore-api-project
image: doctnetcore-api-project:development
restart: 'always'
networks:
- mynetwork
volumes:
- /api/src:/src
networks:
mywebmc:
external:
name: mynetwork
当我运行docker-compose up 时,我收到如下所示的错误:
MSBUILD : error MSB1003: Specify a project or solution file. The current working directory does not contain a project or solution file.
ERROR: Service 'doctnetcore-api-project' failed to build: The command '/bin/sh -c dotnet restore' returned a non-zero code: 1
如果我注释掉RUN dotnet restore 并在运行docker-compose 之前手动运行dotnet restore,它可以正常工作。
所以无论出于何种原因,RUN 无法看到我的卷目录,而ENTRYPOINT 可以看到我的卷目录。
【问题讨论】:
-
您是否希望卷的内容成为用于标识容器的哈希的一部分,这样当这些内容发生变化时,
dotnet restore命令会被重新调用?如果是这样,您根本不希望它成为一个卷,而是希望以一种将其视为容器状态的一部分的方式复制它。
标签: docker asp.net-web-api2 .net-core docker-compose dockerfile