对于VS 2017中的asp.net核心项目模板,有docker-compose.ci.build.yml:
version: '3'
services:
ci-build:
image: microsoft/aspnetcore-build:1.0-2.0
volumes:
- .:/src
working_dir: /src
command: /bin/bash -c "dotnet restore ./WebAppCoreDockerTest.sln && dotnet publish ./WebAppCoreDockerTest.sln -c Release -o ./obj/Docker/publish"
搬运工-compose.yml:
version: '3'
services:
webappcoredockertest:
image: webappcoredockertest
ports:
- 8080:80
build:
context: ./WebAppCoreDockerTest
dockerfile: Dockerfile
和Dockerfile:
FROM microsoft/aspnetcore:2.0
ARG source
WORKDIR /app
EXPOSE 80
RUN echo "Oh dang look at that $source"
COPY ${source:-obj/Docker/publish} .
ENTRYPOINT ["dotnet", "WebAppCoreDockerTest.dll"]
如果source参数为null并且docker-compose.ci.build.yml puhlishs项目为obj / Docker / publish,则Dockerfile使用obj / Docker / publish中的文件(复制到容器),我认为它们是相关的。< / p>
所以问题是如何一起使用? (docker-compose.ci.build.yml将文件发布到obj / Docker / publish,Dockerfile使用已发布的文件)
答案 0 :(得分:2)
正如您所提到的,docker-compose.ci.build.yml
文件用于构建项目。它使用aspnetcore-build
基本映像,它比Dockerfile使用的aspnetcore
映像更加强大。 Dockerfile
被docker-compose.yml文件的build
部分使用。
一切都与这两个步骤一起工作:
docker-compose -f docker-compose.ci.build.yml run ci-build
docker-compose up --build
第一个命令中的-f
选项允许您指定默认docker-compose.yml
以外的撰写文件。