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

  

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章