Lui*_*ril 2 docker docker-compose
我当前的项目包括mongo服务器,rabbitmq服务器和dotnet核心服务。它的结构如下:
.
??? project1.docker-compose.yml #multiple docker-compose files for all projects
??? .dockerignore
??? Util/
| ??? some common code across all projects
??? Project1/ #there are multiple projects at the same level with the same structure
??? .docker/
| ??? mongodb
| | ???Dockerfile
| ??? rabbitmq
| ???Dockerfile
??? BusinessLogicClasses/
| ??? some classes that contain my business logic
??? DotNetCoreService/
??? my service code
??? .docker
???Dockerfile
Run Code Online (Sandbox Code Playgroud)
现在,我能够使用docker-compose命令成功为mongodb,rabbitmq和dot net core构建映像。docker-compose.yml位于主目录级别,因为我的不同项目(在本例中为Project1)引用了在Util目录下找到的代码。因此,我需要能够提供两个目录上方的上下文,以便可以在Dockerfile上使用COPY操作。
我的基本project1.docker-compose.yml如下(我排除了不重要的部分)
version: '3'
services:
rabbitmq:
build:
context: Project1/.docker/rabbitmq/
mongodb:
build:
context: Project1/.docker/mongodb/
dotnetcoreservice:
build:
context: ./
dockerfile: Project1/DotNetCoreService/.docker/Dockerfile
Run Code Online (Sandbox Code Playgroud)
可以看出,dotnetcoreservice的上下文位于主目录级别。因此,针对该特定映像的Dockerfile需要将上下文的完整路径作为目标,如下所示:
#escape=`
FROM microsoft/dotnet:2.0-sdk AS build
WORKDIR /app
COPY Project1/ ./Project1/
COPY Util/ ./Util/
RUN dotnet build Project1/DotNetCoreService/
Run Code Online (Sandbox Code Playgroud)
在本地目录级别通过docker-compose命令调用此dockerfile时,该文件成功运行,但是在通过该docker build .\Project1\DotNetCoreService\.docker\命令调用时,它失败并显示以下消息:
COPY失败:stat / var / lib / docker / tmp / docker-builder241915396 / Project1:没有此类文件或目录
我认为这是实际上下文的问题,因为docker build指令会自动将上下文设置为Dockerfile所在的位置。我希望能够使用相同的目录结构docker-compose build通过和docker build指令创建图像。
这可能吗?
使用标志-f 设置自定义路径
例: docker build --rm -t my-app -f path/to/dockerfile .
| 归档时间: |
|
| 查看次数: |
1328 次 |
| 最近记录: |