美好的一天,
我是Docker的新手。我有两个项目,每个项目都有dockerfiles。
我的项目是: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;"]
当我逐个构建和运行它们时,这两个dockerfiles都正常工作。
我主要担心的是,如何将它们转换为docker-compose.yml
以避免逐个运行创建的图像。
假设您具有以下目录结构:
/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 ...