运行 命令无法访问卷

RUN command cannot access volumes

dockerfile 中似乎 RUN 看不到我的卷目录,而 ENTRYPOINT 可以。

这是一个 dockerfiledocker-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 中的语句在构建时 (docker build) 执行,此时没有卷存在。

相比之下,ENTRYPOINT 是在您 运行 一个可以访问潜在映射卷的容器 (docker run) 时执行的。