【问题标题】:Asp.net core with linux docker container带有 linux docker 容器的 Asp.net 核心
【发布时间】:2017-11-14 05:46:29
【问题描述】:

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"

docker-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"]

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

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

【问题讨论】:

  • 小心使用命令:command: /bin/bash -c "dotnet restore ./WebAppCoreDockerTest.sln && dotnet publish ./WebAppCoreDockerTest.sln -c Release -o ./obj/Docker/publish"当前命令会将测试库添加到您的 docker 映像中。我建议从构建中排除测试项目。
  • @Leonid 谢谢,一个问题:docker-compose.ci.build.yml 命令的上下文在本地或容器中,并将文件从 /src/WebAppCoreDockerTest/obj/Docker/publish/ 复制到本地?

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


【解决方案1】:

正如您提到的,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

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

【讨论】:

  • 谢谢,一个问题:docker-compose.ci.build.yml 命令的上下文是在本地还是在容器中,并将文件从 /src/WebAppCoreDockerTest/obj/Docker/publish/ 复制到本地?
  • 本地上下文。
  • @Leonid 如果我更改了working_dir (working_dir:/src2),那么它找不到项目,所以它在src 文件夹中查找项目,但是本地没有src 文件夹,这是什么发生了吗?
  • @Leonid 似乎上下文在容器中。我添加了额外的卷(./result:/src/WebAppCoreDockerTest/obj/Docker/publish),然后发布的文件将从容器复制到本地的结果文件夹。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-23
  • 2022-08-16
  • 2019-02-21
  • 1970-01-01
  • 2016-06-30
  • 2019-08-03
  • 1970-01-01
相关资源
最近更新 更多