带有linux docker容器的Asp.net核心

对于VS 2017中的asp.net核心项目模板,有do​​cker-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"] 

Dockerfile使用obj / Docker / publish中的文件(复制到容器),如果源参数为null,并且docker-compose.ci.build.yml puhlishs项目到obj / Docker / publish,我假设它们是相关的。

所以问题是如何一起使用它们 ? (docker-compose.ci.build.yml将文件发布到obj / Docker /发布和Dockerfile使用发布的文件)

docker-compose.ci.build.yml文件用于构build项目,如您所述。 它使用的aspnetcore-build基础镜像比aspnetcore使用的aspnetcore镜像要高得多。 Dockerfile被docker-compose.yml文件的build部分使用。

一切都与这两个步骤一起工作:

  1. docker-compose -f docker-compose.ci.build.yml run ci-build
  2. docker-compose up --build

第一个命令中的-f选项允许您指定除默认docker-compose.yml之外的docker-compose.yml