Win10上的Docker應用:Docker-compose(容器編排)


閱讀目錄:

 

前言:

  昨天完成了Docker入門示例(Docker應用:Hello World),示例只是粗略展示了單機應用在Docker中部署的大概流程;

但是即使先不考慮大型項目關聯的多個應用服務,單單只是單機應用部署來說,過程也是略為復雜。

  因為現在的軟件公司開發、測試、部署基本上分開,甚至交由不同的人完成各個階段的工作,如果軟件部署要敲寫大量的命令,

那還是很容易出錯;甚至有些公司只是運維人員、工程人員在部署,一旦出了問題,他們想找到原因基本很難。

所以要求部署必須是接近傻瓜式的,所以有了容器編排技術。

 

一、遺留問題

  昨天的示例是遺留有一些問題的,比如容器重啟后IP地址變化,容器重啟后應用相關的遠程容器服務都將失效,這點是非常致命的。

第二是網絡通信問題,昨天的示例中Web調用Mysql是通過ip映射,出到容器外部在訪問另外一個容器內部的數據,如下:

1 conn = new MySqlConnection("server=198.198.198.181;User Id=root;password=mima2100;Database=mysql-db");

198.198.198.181是我本地機器的局域網IP,由於這個IP,導致Web應用對Mysql容器有了硬耦合,得想辦法去掉。

 

二、解決問題

1、其實也簡單,在Dockerfile文件相同目錄創建docker-compose.yml文件

復制代碼
 1 version: '3'
 2 services:
 3   web:
 4       build: .
 5       ports:
 6        - "8000:80"
 7       depends_on:
 8        - mysql
 9   mysql:
10     container_name: mysql_dc
11     environment:
12       - MYSQL_ROOT_PASSWORD=mima2100
13     image: mysql
14     ports:
15       - "3306:3306"
復制代碼

2、上邊的docker-compose.yml文件格式,其他參數各自百度一下,意思就是創建2個應用:web、mysql

2.1、web在本直接build(也有從鏡像下載的方式),80端口映射到本地8000端口,依賴mysql

2.2、mysql指定登錄密碼mima2100,容器3306端口映射到本地3306

2.3、Mysql連接改成如下:

復制代碼
 1 using Dapper;
 2 using System;
 3 using System.Collections.Generic;
 4 using System.Data;
 5 using System.Threading.Tasks;
 6 using MySql.Data.MySqlClient;
 7 
 8 namespace WebApp_HelloWorld.Controllers
 9 {
10     public class DBService
11     {
12         protected IDbConnection conn;
13 
14         public DBService()
15         {
16             conn = new MySqlConnection("server=mysql_dc;User Id=root;password=mima2100;Database=mysql-db");
17         }
18 
19         public async Task<T> Single<T>(string sql, object paramPairs = null)
20         {
21             return await conn.QuerySingleOrDefaultAsync<T>(sql, paramPairs);
22         }
23 
24         public async Task<int> Count(string sql, object paramPairs = null)
25         {
26             return await conn.QuerySingleOrDefaultAsync<int>(sql, paramPairs);
27         }
28     }
29 }
復制代碼

 

三、驗證

1、驗證一下docker-compose版本

1 docker-compose version

2、定位到web目錄,輸入指令

1 docker-compose up -d

 

3、查看容器

1 docker ps -a

可以看到mysql與web都創建成功了,無報錯。

4、訪問一下localhost:8000

搞定。。

 

 

出處:https://www.cnblogs.com/lanxiaoke/p/10439282.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM