RUN命令不能访问卷
它出现在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
如果我在运行docker-compose
之前手动注释掉RUN dotnet restore
并手动运行dotnet restore
,则工作正常。
所以无论出于什么原因,看起来RUN
看不到我的卷目录, ENTRYPOINT
可以看到我的卷目录。
Dockerfile中的语句在构build时执行(docker docker build
),此时没有卷存在。
相比之下,当您运行可访问潜在映射卷的容器( ENTRYPOINT
docker run
)时,会执行ENTRYPOINT
。