适用于ASP.NET Core API App和Angular6 App的DockerCompose

时间:2018-08-30 08:58:08

标签: angular docker asp.net-web-api docker-compose dockerfile

美好的一天,

我是docker的新手。我有2个项目,每个项目中都有dockerfile。

我的项目是:ASP.NET Core API和Angular6

在我的ASP.NET Core API项目中,这是我的工作dockerfile

FROM microsoft/dotnet:2.1-aspnetcore-runtime
ARG source
WORKDIR /app
EXPOSE 80
COPY ${source:-obj/DockerPublishedApp} .
ENTRYPOINT ["dotnet", "myapp.dll"]

我确实手动发布了我的应用程序,并将其存储在我的DockerPublishedApp中。

在我的Angular6项目中,这是我的工作dockerfile。

FROM nginx:1.13.3-alpine
RUN rm -rf /usr/share/nginx/html/*
COPY /dist/mypublishedangularapp /usr/share/nginx/html
CMD ["nginx","-g","daemon off;"]

当我一个一个地构建并运行它们时,这两个dockerfile都正常工作。

我主要关心的是,如何将它们转换为docker-compose.yml,以避免一个接一个地运行创建的图像。

1 个答案:

答案 0 :(得分:0)

假设您具有以下目录结构:


    /proj1
        /Dockerfile
    /proj2
        /Dockerfile
    /docker-compose.yml

您可能具有以下撰写文件:


    version: '3.4'

    services:
      proj1:
        image: proj1:latest     
        build:
          context: ./proj1
          dockerfile: Dockerfile

      proj2:
        image: proj2:latest     
        build:
          context: ./proj2
          dockerfile: Dockerfile  


然后运行docker-compose -f docker-compose.yml up --build来生成两个图像并运行它们。这样将生成映像proj1:latest和proj2:latest。

或者,如果您不想构建它们,只需删除构建键,然后省略--build。


要从Dockerfile中运行发布,请执行以下操作:

    version: '3.4'

    services:
      proj1:
        image: proj1:latest     
        build:
          context: ./proj1
          dockerfile: Dockerfile 
        command: dotnet publish ...