一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - 利用docker-compose搭建AspNetCore開發環境

利用docker-compose搭建AspNetCore開發環境

2020-05-11 12:48蝌蝌 ASP.NET教程

這篇文章主要為大家詳細介紹了利用docker-compose搭建AspNetCore開發環境,具有一定的參考價值,感興趣的小伙伴們可以參考一下

使用docker-compose搭建AspNetCore開發環境

1 使用docker-compose搭建開發環境

我們的目標很簡單:使用docker-compose把若干個docker容器組合起來就成了。

首先使用Nginx代理所有的Web程序,這樣只需要在主機上監聽一個端口就可以了,不污染主機。再組合各Web程序、Redis/Memcached、SqlServerOnLinux。
新建一個目錄sites,所有和集群相關的都放在這里,目錄結構如下所示

sites
    nginx
        sites-enabled
            default
        Dockerfile
    redis
        Dockerfile
        redis.conf
    docker-compose.yml

新建docker-compose.yml

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
version: "2"
services:
 redis:
 build: ./redis/
 restart: always
 container_name: mac-redis
 identity:
 build: ~/identity/src/Web/ #identity項目的Dockerfile所在的目錄
 restart: always
 volumes:
  - ~/identity/src/Web/bin/Debug/netcoreapp1.1/publish:/app #把編譯好的序集添加到數據卷中
 links:
  - 'ucenter:api.ucenter.com' #因為identity項目依賴ucenter項目,identity目內部通過url:api.ucenter.com調用ucenter的webapi,所以這里要給設置一個和ur一樣的別名,這樣identity項目訪問`api.ucenter.com`就會被轉發到ucenter容器。
  - redis
 extra_hosts:
  - "dbserver:192.168.199.143" #之前搭建了一個sqlserver容器,那個是單獨放在個Linux機器里面,所以這里就直接通過地址調用,注意要開啟遠程訪問。
 container_name: identity
 logging:
  driver: "json-file"
  options:
  max-size: "50k" #因為隨著程序的運行,日志會越來越多,導致每次加載時間越越長,所以規定日志文件大小,節省時間
  max-file: "10"
 ucenter:
 build: ~/UCenter/src/WebAPI #ucenter項目的Dockerfile所在的目錄
 restart: always
 volumes:
  - ~/UCenter/src/WebAPI/bin/Debug/netcoreapp1.1/publish:/app
 links:
  - redis
 extra_hosts:
  - "dbserver:192.168.199.143"
 container_name: ucenter
 nginx-host:
 build: ./nginx #nginx的Dockerfile所在的目錄
 restart: always
 ports:
  - "80:80" #監聽主機的80端口,或者其它的端口都可以
 links:
  - identity
  - ucenter
 volumes:
  - ./nginx/sites-enabled:/etc/nginx/sites-enabled #nginx的配置文件放在據卷中,以后需要改動的時候,重啟nginx就可以了,不用重新build
  - /WebCommon:/www/data #各個項目共用的靜態文件,一般走cdn的,在開發環境里就nginx代理
 container_name: nginx-host
 logging:
  driver: "json-file"
  options:
  max-size: "50k"
  max-file: "10"

上面在集群中配置了4個服務,一個nginx負責監聽主機的80端口,并轉發到相應的服務中去。
identity是我開發的項目,依賴于ucenter項目
項目中都依賴redis緩存,還有通過host解析的數據庫服務dbserver。

2 下面先搭建nginx服務

sites->nginx目錄下面,新建sites-enabled目錄,再新建一個名為default的配置文件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
server {
 listen 80;
 server_name account.xxx.com; #identity項目的域名
 location / {
 proxy_pass  http://identity; #轉發到identity服務處理
 proxy_set_header Host $host;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_connect_timeout 150;
 proxy_send_timeout 100;
 proxy_read_timeout 100;
 proxy_buffers 4 32k;
 client_max_body_size 8m;
 client_body_buffer_size 128;
 }
}
 
server {
 listen 80;
 server_name ucenter.xxx.com; #ucenter項目的域名
 location / {
 proxy_pass  http://ucenter; #轉發到ucenter服務處理
 proxy_set_header Host $host;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_connect_timeout 150;
 proxy_send_timeout 100;
 proxy_read_timeout 100;
 proxy_buffers 4 32k;
 client_max_body_size 8m;
 client_body_buffer_size 128;
 }
}
 
server {
 listen 80;
 server_name cdn.xxx.com; #這里把靜態文件打包成一個服務,替代cdn
 root /www/data;
 location / {
 }
}

這個是nginx的配置文件,主要配置Nginx的代理方式。下面編寫生成Nginx的Dockerfile,sites->nginx下面新建Dockerfile

?
1
2
FROM tutum/nginx
VOLUME /etc/nginx/sites-enabled

通過這個Dockerfile就可以創建Nginx了,

3 安裝redis

1).再sites下新建目錄:mkdir redis

2).vim Dockerfile

?
1
2
3
FROM redis
COPY redis.conf /usr/local/etc/redis/redis.conf
CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ]

3).vim redis.conf, 復制粘貼redis的配置,這是redis的官方默認配置。

4).docker build -t mac-redis .我給它起了個名字叫mac-redis

5).鏡像創建好之后,先測試一下能不能用,docker run -d --name mac-redis mac-redis。這時候mac-redis的容器已經在后臺跑起來了,我們再用redis-cli測試這個redis服務,docker run -it --link mac-redis:redis --rm redis redis-cli -h redis -p 6379使用--rm參數,用完就清除這個容器。測試如下:

?
1
2
3
4
redis:6379> set key1 value1
OK
redis:6379> get key1
"value1"

看來redis服務沒問題,exit退出。再把測試用的redis服務容器也刪除掉docker rm -f mac-redis。

4 使用docker跑aspnetcore程序

這個是最簡單的了,根據微軟的鏡像來就行了,園子里也有大量的教程。

在這里我把它們放在集群中,只要在docker-compose.yml中配置各個aspnetcore程序的Dockerfile所在的路徑即可,在我們的yml文件中有

?
1
build: ~/identity/src/Web/ #identity項目的Dockerfile所在的目錄

identity的源代碼所在的目錄為~/identity/,Dockerfile在其中的src/web里面,如下:

?
1
2
3
4
FROM microsoft/aspnetcore:1.1.1
LABEL Name=identity Version=0.0.1
ENV ASPNETCORE_ENVIRONMENT Development
ENTRYPOINT ["dotnet", "Identity.Web.dll"]

如果有多個Dockerfile,可以在yml中指定Dockerfile的名稱。

另外一個ucenter的Dockerfile如下:

?
1
2
3
FROM microsoft/aspnetcore:1.1.1
LABEL Name=ucenter Version=0.0.1
ENTRYPOINT ["dotnet", "UCenter.WebAPI.dll"]

代碼修改了之后,dotnet publis && docker restart xxx(xxx就是容器的名稱)就生效了。

使用chrome瀏覽器訪問

最后進入sites目錄,docker-compose up啟動集群,由于nginx監聽的是主機的80端口,所以需要把綁定的url指向主機的80端口,一種方法是直接在hosts中加解析,但是不推薦這樣做,因為如果要訪問線上的項目的話,又要改hosts。為了不污染主機環境,推薦使用chrome瀏覽器,chrome有多用戶功能,因此新建一個用戶,使用SwitchyOmega插件,將所需要的URl代理到主機的80端口,這樣以后開發的時候用這個chrome的這個用戶就可以了,完全不影響主機環境。

利用docker-compose搭建AspNetCore開發環境

在開發環節中,debug是必不可少的需求,所以下篇介紹如何用VSCode在Docker中debug。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 农夫69小说恋老妇小说 | 欧美亚洲韩国 | 成人私人影院在线观看网址 | 天堂在线中文无弹窗全文阅读 | 草莓视频看污 | 国产91精品露脸国语对白 | 国产亚洲精品综合在线网址 | tk白嫩玉足脚心vk | jzzjlzz亚洲乱熟在线播放 | 狠狠燥| 日韩 国产 欧美 精品 在线 | 深夜影院深a久久 | 羲义嫁密着中出交尾gvg794 | japan日韩xxxx69hd japanese在线观看 | 色偷偷亚洲综合网亚洲 | 国产精品久线观看视频 | 国产成人精品s8sp视频 | 国产黑丝一区 | 手机看片1024国产 | 国产伊人网 | 色呦呦网| 大又大又黄又爽免费毛片 | 久热这里只有精品99国产6 | 九九大香尹人视频免费 | 99久久国产综合精品女小说 | a毛片免费观看完整 | 18韩国美女vip视频7 | 视频一区二区 村上凉子 | 午夜欧美福利视频 | 男人v天堂| 91热这里只有精品 | 91国内在线国内在线播放 | kuaibo成人播放器 | 4455永久在线观免费看片 | 国内自拍网红在综合图区 | 精品日韩二区三区精品视频 | 精品视频在线观看免费 | 美女gif跪趴式抽搐动态图 | 5151hh四虎国产精品 | 国产综合社区 | 亚洲视频在线免费看 |