日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

Docker ASP.NET Core (5):Docker Compose

發布時間:2024/7/5 asp.net 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Docker ASP.NET Core (5):Docker Compose 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Docker & ASP.NET Core (5):Docker Compose 原文:Docker & ASP.NET Core (5):Docker Compose

第一篇:把代碼連接到容器?

第二篇:定制Docker鏡像

第三篇:發布鏡像

第四篇:容器間的連接

?

Docker Compose簡介

Compose是一個用來定義和運行多容器Docker應用的工具。使用Compose的時候,你可以使用一個YAML文件來配置你應用的服務。然后根據配置,使用一個命令即可創建并運行所有的服務。

使用Compose的時候通常分三步:

  • 使用Dockerfile定義你的環境
  • 在docker-compose.yml文件里定義你的服務,這樣就可以讓他們在隔離的環境中一起運行了。
  • 運行docker-compose up 命令,來啟動和運行整個應用。
  • ?

    Docker Compose的特點

    Docker Compose可以做很多事情,但是如果只考慮在開發環境里,它可以做下面這些事情:

    • 管理整個應用的生命周期:啟動、停止、重構建服務,而服務呢,其實就是運行的容器而已。
    • 查看在運行的服務的狀態,包括輸出日志。
    • 可以在單個容器上運行一次性命令。

    ?

    為什么要使用Docker Compose

    通常來說,如果你的應用稍微有點規模,例如你的Web應用需要使用Web服務器,緩存服務器,數據庫服務器。。。如果你手動管理這樣的docker應用,就很繁瑣,也很容易出錯。

    而如果使用Docker Compose的話,它可以定義一個docker-compose.yml文件,在這個文件里,你可以定義所有的這些服務,以及它們之間的關系。

    ?

    docker-compose.yml文件

    docker-compose.yml文件就是用來配置服務的,這里有一個官網給出的例子:

    ?

    這個文件寫好之后,就可以開始Docker Compose的構建過程了。

    這個構建的過程實際上會生成鏡像,然后使用這些鏡像就可以創建容器了。

    然后再使用一個簡單的命令,就可以讓這些服務啟動并運行了。

    ?

    下面簡單講一下這個docker-compose.yml文件:

    第一行是版本。

    下面services,就是服務。

    在services里,可以定義當構建docker-compose.yml文件時想要運行的服務,然后把這些鏡像以容器運行。這里可以定義ASP.NET Core,node,數據庫,緩存等等。

    看一下服務里的東西:

    • build,里面可以定義構建的上下文,例如在哪個文件見來進行構建;還可以指定使用的dockerfile。
    • 在這里也可以定義環境變量。
    • image,定義鏡像。
    • networks,可以把服務和定義好的網絡聯系起來。
    • ports,定義端口。
    • volumes,定義卷。

    也可以在里面定義networks等等。

    ?

    Docker Compose的命令

    • docker-compose build 把服務構建成鏡像。
    • docker-compose up,一旦鏡像準備好了,那就就執行該命令,啟動那些鏡像,使之成為容器運行。
    • docker-compose down,可以使用該命令停止、刪除由up命令建立的一切東西。

    此外還有這些常用形式的命令:

    • docker-compose logs
    • docker-compose ps
    • docker-compose stop
    • docker-compose start
    • docker-compose rm

    ?

    docker-compose build

    這個命令會構建/重新構建定義在docker-compose.yml文件里的所有的服務,使用這一個命令就會一次性把所有服務需要的鏡像都創建好。

    ?

    此外還可以構建單獨的服務,例如: docker-compose build mongo。有時候你不想把所有的東西都重新構建一遍,你只想構建其中的一個服務。

    ?

    docker-compose up

    一切都構建好之后,就可以啟動并運行了。這時就會使用docker-compose up這個命令。

    它會自動創建容器,并運行這些容器。

    ?

    該命令還可以加一些參數,例如 docker-compose up --no-deps node,它表示重新構建node鏡像,停止、銷毀重新創建node,但不重新創建node所依賴的服務。

    ?

    docker-compose down

    該命令會停止所有的容器,然后刪除它們。

    如果只想停止容器,并不刪除,那么應該使用docker-compose stop。

    ?

    此外如果你還想同時刪除所有的鏡像和volumes,你可以:

    docker-compose down --rmi all --volumes

    ?

    Docker Compose 實例

    前面文章里,我通過手動輸入命令實現了一套ASP.NET Core 和 PostgreSQL的docker 應用。盡管該應用很簡單,只有兩部分組成,但當時還是輸入了不少命令,也遇到了幾次錯誤,相對還是繁瑣一些。

    現在我把這兩個容器刪掉(包括相應的鏡像和網絡都刪掉吧),然后使用docker-compose來實現。

    ?

    建立docker-compose.yml文件

    注意,我還沒寫完。

    這里我指定了版本為‘3’,當前也就是這個版本。

    然后在services里,我定義了coreweb服務(ASP.NET Core Web應用),它的構建的上下文環境 context是.,也就是當前目錄;使用的dockerfile是標準的Dockerfile;端口是映射到8080,內部端口是5000;使用的網絡是aspcore-network。

    最后邊定義了網絡,名為aspcore-network,類型是bridge橋接網絡。

    ?

    然后繼續寫:

    這里又添加了postgres-server這個服務,它是直接使用的官方鏡像postgres,網絡還是同一個網絡,但是這里設置了一個環境變量,是數據庫的密碼。

    ?

    執行docker-compose build

    定義好docker-compose.yml之后,就可以進行構建了,執行docker-compose build

    很快就完成了。

    ?

    然后看一下鏡像列表:

    第一個就是我建立的coreweb,其實我們可以自定義它的名稱。

    而postgres這個鏡像我早就下載下來了,所以它的創建時間比較早。

    ?

    執行docker-compose up

    docker-compose up:

    這里出現了一些問題:這是我第一次運行該項目,運行項目的同時,代碼里會做數據庫的自動遷移,但是ASP.NET Core Web應用先跑起來了,它開始做遷移,然后發現數據庫服務還沒跑起來呢,所以ASP.NET Core項目就報錯了,它的容器就停掉了。而過了一會postgres的服務才啟動完成。。。

    ?

    這也很好辦,現在postgres的服務起來了,那么,我再手動啟動一下ASP.NET Core Web的容器就可以了。docker-compose start coreweb:

    ?

    然后訪問http://localhost:8080:

    網站就可以正常訪問了。

    ?

    現在這種操作還有一點瑕疵,因為docker-compose up之后,終端里都是log,我們處在log模式下,無法做其它操作。需要再打開一個終端來執行其它命令:

    ?

    執行docker-compose down

    所以我想重新搞一下,先把這套東西拆了:docker-compose down

    ?

    試驗其它命令

    為了避免上述問題,這次我們使用daemon mode 守護進程模式,docker-compose up -d

    ?

    然后我們這次使用這個命令來看進程,docker-compose ps

    可以看到這兩個容器,然后Web應用又發生前面的問題了,我在單獨跑一下它:

    這次就OK了。

    ?

    再次訪問網站:

    還是可以正常運行的。

    ?

    下面看一下log,docker-compose logs

    ?

    最后銷毀這套東西,這次我把相應的鏡像也刪掉 docker-compose down --rmi all

    能刪的都刪除了,但這里postgres這個鏡像無法刪除是因為我還有其它容器使用該鏡像。

    posted on 2019-01-25 22:44 NET未來之路 閱讀(...) 評論(...) 編輯 收藏

    轉載于:https://www.cnblogs.com/lonelyxmas/p/10322132.html

    總結

    以上是生活随笔為你收集整理的Docker ASP.NET Core (5):Docker Compose的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。