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

时间:2023-01-29 21:16:48

阅读目录:

前言:

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

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

  因为现在的软件公司开发、测试、部署基本上分开,甚至交由不同的人完成各个阶段的工作,如果软件部署要敲写大量的命令,

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

所以要求部署必须是接近傻瓜式的,所以有了容器编排技术。

一、遗留问题

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

第二是网络通信问题,昨天的示例中Web调用Mysql是通过ip映射,出到容器外部在访问另外一个容器内部的数据,如下:

 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文件

 version: ''
services:
web:
build: .
ports:
- "8000:80"
depends_on:
- mysql
mysql:
container_name: mysql_dc
environment:
- MYSQL_ROOT_PASSWORD=mima2100
image: mysql
ports:
- "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连接改成如下:

 using Dapper;
using System;
using System.Collections.Generic;
using System.Data;
using System.Threading.Tasks;
using MySql.Data.MySqlClient; namespace WebApp_HelloWorld.Controllers
{
public class DBService
{
protected IDbConnection conn; public DBService()
{
conn = new MySqlConnection("server=mysql_dc;User Id=root;password=mima2100;Database=mysql-db");
} public async Task<T> Single<T>(string sql, object paramPairs = null)
{
return await conn.QuerySingleOrDefaultAsync<T>(sql, paramPairs);
} public async Task<int> Count(string sql, object paramPairs = null)
{
return await conn.QuerySingleOrDefaultAsync<int>(sql, paramPairs);
}
}
}

三、验证

1、验证一下docker-compose版本

 docker-compose version

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

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

 docker-compose up -d

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

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

3、查看容器

 docker ps -a

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

可以看到mysql与web都创建成功了,无报错。

4、访问一下localhost:8000

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

搞定。。

Docker应用:Docker-compose(容器编排)的更多相关文章

  1. 物联网架构成长之路&lpar;24&rpar;-Docker练习之Compose容器编排

    0.前言 一开始学的之后,是想一步到位直接上Kubernetes(K8s)的,后面没想到,好像有点复杂,有些概念不是很懂.因此学习东西还是要循序渐进,慢慢来.先了解单机编排技术Docker Compo ...

  2. AspNetCore容器化&lpar;Docker&rpar;部署&lpar;三&rpar; —— Docker Compose容器编排

    一.前言 上一篇部署了一个最基础的helloworld应用,创建了两个容器和一个network,还算应付得过来. 如果该应用继续引入mysql.redis.job等若干服务,到时候发布一次得工作量之大 ...

  3. Docker Compose 容器编排 NET Core 6&plus;MySQL 8&plus;Nginx &plus; Redis

    环境: CentOS 8.5.2111Docker 20.10.10Docker-Compose 2.1.0 服务: db  redis  web nginx NET Core 6+MySQL 8+N ...

  4. Docker知识进阶与容器编排技术

    目录 1 使用Dockerfile定制redis镜像 1.1 环境准备 1.2 编写Dockerfile文件 1.3 通过Dockerfile构建镜像 1.4 通过镜像运行容器 1.5 官方镜像替代我 ...

  5. Docker Compose容器编排

    Compose是Docker官方的开源项目,可以实现对Docker容器集群的快速编排.Compose 中有两个重要的概念:服务(service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实 ...

  6. Docker Compose 容器编排

    1. 前言 Docker Compose 是 Docker 容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器. 使用Compose 基本上分为三步: Dockerfile 定义应用 ...

  7. Jenkins Jfrog Artifactory 以及docker下的pipeline 容器编排实践

    1. 测试环境情况: Docker主机 10.24.101.99 JFrog Artifactory 主机 (admin password) jenkinx github原始地址:https://gi ...

  8. DOCKER 学习笔记4 认识DockerCompose 多容器编排

    前言 通过上一节的学习,学会了如何在Linux 环境下搭建Docker并且部署Springboot 项目,并且成功的跑了起来,当然,在生产环境中,不只是需要一个后端的Web 项目,还需要比如 Ngin ...

  9. Docker,Docker Compose,Docker Swarm,Kubernetes之间的区别

    Dcoker Docker 这个东西所扮演的角色,容易理解,它是一个容器引擎,也就是说实际上我们的容器最终是由Docker创建,运行在Docker中,其他相关的容器技术都是以Docker为基础,它是我 ...

  10. AspNetCore容器化&lpar;Docker&rpar;部署&lpar;二&rpar; —— 多容器通信

    一.前言 着上一篇 AspNetCore容器化(Docker)部署(一) —— 入门,在单个容器helloworld的基础上引入nginx反向代理服务器组成多容器应用. 二.配置反向代理转接 配置转接 ...

随机推荐

  1. 浅谈css的栅格布局

    栅格布局想必大家都很了解,我们做页面开发的时候,往往对页面板式的要求很高,如何对各个区域的内容排版,并使之对齐是我们的一大难题.而栅格系统就是我们排版的利器,他支持自动对齐.自动计算边距.流式布局等优 ...

  2. oracle错误处理及实操-【INS-20802】

    服务器硬件要求:内存>1GB,如果是虚拟机,必须设置内存为1.5G以上. 确定好主机名,安装完成以后,不要再修改主机名,一旦修改会导致oracle启动失败,注意:使用默认的localhost.l ...

  3. Java流的正确关闭方式

    因为流是无论如何一定要关闭的,所以要写在finally里.如下: BufferedReader reader = null; try { reader = (BufferedReader) getRe ...

  4. 【转】&period;NET开发人员的瓶颈和职业发展

    现在社会比前几年浮躁了,越来越多的人抱怨薪水低,高薪工作不好找; 诚然这有CPI的压力,可是也有很多人没有认清自己的职业发展. 很多.NET程序员个各种纠结,想拿高薪又拿不到,想提高又不知道怎么能提高 ...

  5. 玩转Google开源C&plus;&plus;单元测试框架Google Test系列&lpar;转载&rpar;

    越来越多公司采用敏捷开发,单元和回归测试越来越重要,GTest作为最佳C++单元测试工具越来越多的被使用.转自 http://www.cnblogs.com/coderzh/archive/2009/ ...

  6. 剑指offier77页

    /* * 输入字母判断第几列 */ import java.util.Scanner; public class JudgeClumns { public static void main(Strin ...

  7. C&num; 操作 Excel 常见问题收集和整理

    C# 操作 Excel 常见问题收集和整理(定期更新,欢迎交流) 经常会有项目需要把表格导出为 Excel 文件,或者是导入一份 Excel 来操作,那么如何在 C# 中操作 Excel 文件成了一个 ...

  8. C&num;推送RTMP到SRS通过VLC进行取流播放!!

    前面一篇文章简单的介绍了下如何利用SRS自带的播放地址进行观看RTMP直播流,也就是说是使用SRS的内置demo进行Test,但是进行视频直播肯定不可能使用那样的去开发,不开源的东西肯定不好用.由于在 ...

  9. Windows和Office激活工具Kmsauto Net

    对于微软操作系统和OFFICE的激活,以前笔者用过 ”HEU_KMS_Activator_v11.2.0” ,不过这个工具速度相对比较慢.今天给大家推荐一个新的激活工具:KmsautoNet . 很简 ...

  10. ♣eclipse护眼颜色和关键字颜色设置

    eclipse护眼颜色和字体大小设置   ♣eclipse护眼颜色和关键字颜色设置 ♣eclipse字体大小设置(包括jsp , .xml ,.java) 1.Eclipse字体大小调整: 窗口(Wi ...