Win10上的Docker应用:Docker-compose(容器编排)

阅读目录:html

 

前言:

  昨天完成了Docker入门示例(Docker应用:Hello World),示例只是粗略展现了单机应用在Docker中部署的大概流程;mysql

可是即便先不考虑大型项目关联的多个应用服务,单单只是单机应用部署来讲,过程也是略为复杂。web

  由于如今的软件公司开发、测试、部署基本上分开,甚至交由不一样的人完成各个阶段的工做,若是软件部署要敲写大量的命令,sql

那仍是很容易出错;甚至有些公司只是运维人员、工程人员在部署,一旦出了问题,他们想找到缘由基本很难。docker

因此要求部署必须是接近傻瓜式的,因此有了容器编排技术。网络

 

1、遗留问题

  昨天的示例是遗留有一些问题的,好比容器重启后IP地址变化,容器重启后应用相关的远程容器服务都将失效,这点是很是致命的。app

第二是网络通讯问题,昨天的示例中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容器有了硬耦合,得想办法去掉。async

 

2、解决问题

一、其实也简单,在Dockerfile文件相同目录建立docker-compose.yml文件post

复制代码
 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"
复制代码

二、上边的docker-compose.yml文件格式,其余参数各自百度一下,意思就是建立2个应用:web、mysql

2.一、web在本直接build(也有从镜像下载的方式),80端口映射到本地8000端口,依赖mysql

2.二、mysql指定登陆密码mima2100,容器3306端口映射到本地3306

2.三、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 }
复制代码

 

3、验证

一、验证一下docker-compose版本

1 docker-compose version

二、定位到web目录,输入指令

1 docker-compose up -d

 

三、查看容器

1 docker ps -a

能够看到mysql与web都建立成功了,无报错。

四、访问一下localhost:8000

搞定。。

 

 

出处:http://www.javashuo.com/article/p-sumxcqlq-hy.html

相关文章
相关标签/搜索