Docker-Compose无法找到Entrypoint DLL但Dockerfile单独运行正常
解决Docker Compose运行.NET项目时找不到Activities.dll的问题
核心问题分析
- Dockerfile路径配置错误:在
activities服务的build配置中,context已经设为./Activities(项目根目录下的Activities文件夹),此时dockerfile路径应直接写Dockerfile,而非./Activities/Dockerfile——后者会在./Activities/Activities/目录下查找Dockerfile,显然不存在,导致构建过程未正确执行,生成的镜像内容异常。 - 不必要的Volume挂载覆盖应用文件:配置中的
volumes: - /app:/app会将主机的/app目录(Linux环境)挂载到容器的/app目录,直接覆盖了Docker构建阶段复制到容器内的已发布应用文件,这是找不到Activities.dll的直接原因。
修正后的docker-compose.yml
version: '3.9' services: redis: image: redis restart: unless-stopped ports: - "6379:6379" networks: - mynetwork activities: build: context: ./Activities dockerfile: Dockerfile # 修正Dockerfile路径 # 移除覆盖/app的volume配置 networks: - mynetwork depends_on: - redis networks: mynetwork: driver: bridge
开发环境热重载配置(可选)
如果需要开发时的代码热重载,不要直接挂载/app目录,可改为挂载项目源码目录到容器的构建目录,同时调整启动逻辑(比如用dotnet run替代发布后的dll启动)。示例挂载配置:
volumes: - ./Activities:/src/Activities
重新构建运行
执行命令清理旧镜像并重新构建:
docker-compose down --rmi local docker-compose up --build
内容的提问来源于stack exchange,提问作者Bewsbews
相关产品推荐
相关产品推荐

