Asp.net核心与linux docker容器

时间:2017-11-14 05:46:29

标签: docker asp.net-core docker-compose dockerfile

对于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"]

如果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使用已发布的文件)

1 个答案:

答案 0 :(得分:2)

正如您所提到的,docker-compose.ci.build.yml文件用于构建项目。它使用aspnetcore-build基本映像,它比Dockerfile使用的aspnetcore映像更加强大。 Dockerfile被docker-compose.yml文件的build部分使用。

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

  1. docker-compose -f docker-compose.ci.build.yml run ci-build
  2. docker-compose up --build
  3. 第一个命令中的-f选项允许您指定默认docker-compose.yml以外的撰写文件。