docker-compose 构建项目

1.创建一个net7 webapi 项目

配置docker-compose.yml 支持

 

 

Deploy 中放的docker-compose.yml  文件

 

2.dockerfile文件

 

#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base
WORKDIR /app
EXPOSE 8001

#配置运行端口
ENV ASPNETCORE_ENVIRONMENT=Development
ENV ASPNETCORE_URLS http://+:8001

FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
WORKDIR /src
COPY ["Dev.DockerComposeTest.csproj", "./"]
RUN dotnet restore "./Dev.DockerComposeTest.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "Dev.DockerComposeTest.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "Dev.DockerComposeTest.csproj" -c Release -o /app/publish /p:UseAppHost=false

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Dev.DockerComposeTest.dll"]
#ENTRYPOINT ["dotnet", "Dev.DockerComposeTest.dll","--urls=http://*:8001"]

 

docker-compose.yml 文件

 ----------------------续更改

version: '3.4'

services:
  docker-compose-demo01:
    build:
      context: ../Dev.DockerComposeTest/
      dockerfile: Dockerfile
    image: docker-compose-demo01
    container_name: docker-compose-demo01
    restart: always
    volumes:
      - ./Logs:/app/Logs/ #映射日志路径  日志会自动映射到容器外  最好是静态资源
    environment:                        # 设置环境变量,相当于docker run命令中的-e
      TZ: Asia/Shanghai
      LANG: en_US.UTF-8
      #ASPNETCORE_ENVIRONMENT: Development    #要有空格
      #ASPNETCORE_URLS: http://+:5011
    #environment:                        # 设置环境变量,相当于docker run命令中的-e
      #- ASPNETCORE_ENVIRONMENT=Development
      #- ASPNETCORE_URLS=http://+:5009  
    ports:
      - "8001:8001"
    #选择网络
    networks:
      - docker-compose-demo-net01
networks:
  docker-compose-demo-net01:
    #driver: "bridge"
    external: false #使用docker-compose批量运行镜像为容器,默认会新建网络,设置为true是不用默认新建网络,使用自定义网络
volumes:
  Logs: {}

----------------续更改

version: '3.4'

services:
  docker-compose-demo01:
    build:
      context: ../Dev.DockerComposeTest/
      dockerfile: Dockerfile
    image: docker-compose-demo01
    container_name: docker-compose-demo01
    restart: always
    environment:                        # 设置环境变量,相当于docker run命令中的-e
      TZ: Asia/Shanghai
      LANG: en_US.UTF-8
      #ASPNETCORE_ENVIRONMENT: Development   #要有空格
      #ASPNETCORE_URLS: http://+:5011
    #environment:                        # 设置环境变量,相当于docker run命令中的-e
      #- ASPNETCORE_ENVIRONMENT=Development
      #- ASPNETCORE_URLS=http://+:5009  
    ports:
      - "8001:8001"
    #选择网络
    networks:
      - docker-compose-demo-net01
networks:
  docker-compose-demo-net01:
    driver: "bridge"

docker-compose.yml 里面有多个service

docker-compose up  镜像名称 -d 

选项说明:

-d 在后台运行服务容器。
--no-color 不使用颜色来区分不同的服务的控制台输出。
--no-deps 不启动服务所链接的容器。
--force-recreate 强制重新创建容器,不能与 --no-recreate 同时使用。
--no-recreate 如果容器已经存在了,则不重新创建,不能与 --force-recreate 同时使用。
--no-build 不自动构建缺失的服务镜像。
-t, --timeout TIMEOUT 停止容器时候的超时(默认为 10 秒)。
————————————————

version: '3.4'

services:
  docker-compose-demo01:
    build:
      context: ../Dev.DockerComposeTest/
      dockerfile: Dockerfile
    image: docker-compose-demo01
    container_name: docker-compose-demo01
    restart: always
    environment:                        # 设置环境变量,相当于docker run命令中的-e
      TZ: Asia/Shanghai
      LANG: en_US.UTF-8
      #ASPNETCORE_ENVIRONMENT: Development
      #ASPNETCORE_URLS: http://+:5011
    #environment:                        # 设置环境变量,相当于docker run命令中的-e
      #- ASPNETCORE_ENVIRONMENT=Development
      #- ASPNETCORE_URLS=http://+:5009  
    ports:
      - "8001:8001"
    #选择网络
    networks:
      - docker-compose-demo-net01
  docker-compose-demo02:
    build:
      context: ../Dev.DockerComposeTest/
      dockerfile: Dockerfile
    image: docker-compose-demo02
    container_name: docker-compose-demo02
    restart: always
    environment:                        # 设置环境变量,相当于docker run命令中的-e
      TZ: Asia/Shanghai
      LANG: en_US.UTF-8
      #ASPNETCORE_ENVIRONMENT: Development
      #ASPNETCORE_URLS: http://+:5012
    #environment:                        # 设置环境变量,相当于docker run命令中的-e
      #- ASPNETCORE_ENVIRONMENT=Development
      #- ASPNETCORE_URLS=http://+:5009  
    ports:
      - "8002:8002"
    #选择网络
    networks:
      - docker-compose-demo-net01   
networks:
  docker-compose-demo-net01:
    driver: "bridge"

 

 

 

 

docker-compose.yml 操作方法

获得一个命令的帮助
docker-compose 命令 --help

构建并启动所有容器,如果镜像存在就重新构建
docker-compose up -d --build

启动所有服务
docker-compose up -d

构建启动nignx容器               
docker-compose up -d nginx       

-f 指定使用的Compose配置文件启动,默认为docker-compose.yml,可以多次指定。
docker-compose -f docker-compose.yml up -d

运行一个服务,并在服务上执行一个命令
docker-compose run 容器id或容器名 ip addr

登录到nginx容器中             
docker-compose exec nginx bash

此命令将会停止 up 命令所启动的容器,并移除网络
docker-compose down

列出项目中运行的所有容器
docker-compose ps

列出项目中运行及未运行的所有容器
docker-compose ps -a

列出所有运行的服务容器
docker-compose ls

列出所有服务容器(包括未运行的容器)
docker-compose ls -a

重新启动nginx容器
docker-compose restart nginx          

构建镜像          
docker-compose build nginx            

不带缓存的构建       
docker-compose build --no-cache nginx     

查看各个服务容器内运行的进程      
docker-compose top              

查看nginx的实时日志               
docker-compose logs -f nginx        

列出 Compose 文件包含的镜像           
docker-compose images 

验证文件配置,当配置正确时,不输出任何内容,当文件配置错误,输出错误信息。                         
docker-compose config                

以json的形式输出nginx的docker日志           
docker-compose events --json nginx        

暂停nignx容器     
docker-compose pause nginx         

恢复ningx容器            
docker-compose unpause nginx      

删除容器(删除前必须关闭容器,执行stop)             
docker-compose rm nginx                       

强制删除容器(不必先关闭容器)             
docker-compose rm -f nginx    

停止nignx容器         
docker-compose stop nginx       
    
启动nignx容器           
docker-compose start nginx     

重启项目中的nignx容器                
docker-compose restart nginx               

下载依赖的镜像
docker-compose pull   

推送服务依的镜像
docker-compose push

设置指定服务运行的容器个数。通过service=num的参数来设置数量
docker-compose scale web=3 db=2

查看版本信息
docker-compose version

  

 

posted @ 2023-01-10 15:24  今晚再打老虎  阅读(318)  评论(0编辑  收藏  举报