当前位置: 首页 > news >正文

Docker-14.项目部署-DockerCompose

一.DockerCompose

大家可以看到,我们部署一个简单的java项目,其中包含3个容器:

  • MySQL

  • Nginx

  • Java项目

而稍微复杂的项目,其中还会有各种各样的其它中间件,需要部署的东西远不止3个。如果还像之前那样手动的逐一部署,就太麻烦了。而且整个项目的部署没有体现出项目的整体性,不方便运维。

而Docker Compose就可以帮助我们实现多个相互关联的Docker容器的快速部署。它允许用户通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器。

docker-compose.yml文件的基本语法可以参考官方文档:

https://docs.docker.com/compose/compose-file/compose-file-v3/

docker-compose文件中可以定义多个相互关联的应用容器,每一个应用容器被称为一个服务(service)。由于service就是在定义某个应用的运行时参数,因此与docker run参数非常相似。

举例来说,用docker run部署MySQL的命令如下:

docker run -d \--name mysql \-p 3306:3306 \-e TZ=Asia/Shanghai \-e MYSQL_ROOT_PASSWORD=123 \-v ./mysql/data:/var/lib/mysql \-v ./mysql/conf:/etc/mysql/conf.d \-v ./mysql/init:/docker-entrypoint-initdb.d \--network hmallmysql

如果用docker-compose.yml文件来定义,就是这样:

version: "3.8"services:mysql:image: mysqlcontainer_name: mysqlports:- "3306:3306"environment:TZ: Asia/ShanghaiMYSQL_ROOT_PASSWORD: 123volumes:- "./mysql/conf:/etc/mysql/conf.d"- "./mysql/data:/var/lib/mysql"networks:- new
networks:new:name: hmall

version: '3.8"是docker compose的语法版本号,containerA是服务名(一个服务就代表了一个镜像),其中包含了镜像,容器名,端口信息等。

对比如下:

dockerCompose和docker run描述的信息基本是一样的,只是语法不一样。

下面是一个dockerCompose的命令示例:

version: "3.8"services:mysql:image: mysqlcontainer_name: mysqlports:- "3306:3306"environment:TZ: Asia/ShanghaiMYSQL_ROOT_PASSWORD: 123volumes:- "./mysql/conf:/etc/mysql/conf.d"- "./mysql/data:/var/lib/mysql"- "./mysql/init:/docker-entrypoint-initdb.d"networks:- hm-nethmall:build: context: .dockerfile: Dockerfilecontainer_name: hmallports:- "8080:8080"networks:- hm-netdepends_on:- mysqlnginx:image: nginxcontainer_name: nginxports:- "18080:18080"- "18081:18081"volumes:- "./nginx/nginx.conf:/etc/nginx/nginx.conf"- "./nginx/html:/usr/share/nginx/html"depends_on:- hmallnetworks:- hm-net
networks:hm-net:name: hmall

在构建hmall容器时,由于我们是通过jar包部署的,因此我们先要通过build构建镜像,然后再来生成容器。这里直接使用

 hmall:build: context: .

就能完成容器的创建。

在构建网络时,我们只需要指定一个网络标签,并在网络标签下指定要构建的网络名称,dockerCompose就会帮助我们自动构建网络,并将其他指定该网络标签的容器自动配置到这一网络下。

networks:hm-net:name: hmall

hm-net就是网络标签。网络名为hmall。

那么如何利用dockerCompose文件完成一键部署呢?

使用docker compose命令即可。

-f:指定路径,如果在当前目录下可以不指定,省略掉。

-p:指定项目名称,可以不指定,默认就叫root。

up:一键启动,创建并启动所有容器。

down:停止并移除所有容器。

ps:列出所有启动容器。

logs:查看指定容器日志。

stop:停止某个容器。

start:启动某个容器。

restart:重启某个容器。

top:查看运行进程。

exec:进入容器内指定命令。

接下来我们使用docker compose进行一键部署,由于在docker compose文件中我们使用的都是相对路径,因此我们要保证docker compose文件和mysql文件夹、nginx文件夹等在同一目录下。

都在同一目录下,满足

使用docker compose up -d进行一键部署:

部署成功!

http://www.dtcms.com/a/335910.html

相关文章:

  • RabbitMQ面试精讲 Day 25:异常处理与重试机制
  • Opencv 形态学与梯度运算
  • 小白成长之路-k8s部署discuz论坛
  • 云原生俱乐部-RH134知识点总结(3)
  • 【网络运维】Playbook进阶: FACTS变量
  • 原子操作(Atomic Operation):指在执行过程中不会被中断的操作
  • 【力扣热题100】双指针—— 三数之和
  • 记一次安装OpenStack(Stein)-nova报错问题解决
  • 19.训练模式、评估模式
  • 基于遗传编程的自动程序生成
  • JAVA面试汇总(四)JVM(二)
  • pytorch线性回归
  • 7 索引的监控
  • 数学建模 14 中心对数比变换
  • 定时器中断点灯
  • Redux搭档Next.js的简明使用教程
  • 安卓开发中遇到Medium Phone API 36.0 is already running as process XXX.
  • 突破Python性能墙:关键模块C++化的爬虫优化指南
  • 【牛客刷题】字符串按索引二进制1个数奇偶性转换大小写
  • 编程算法实例-整数分解质因数
  • Vue3 + Element Plus 人员列表搜索功能实现
  • UE5多人MOBA+GAS 48、制作闪现技能
  • 第三十九天(WebPack构建打包Mode映射DevTool源码泄漏识别还原)
  • 软件开发 - foreground 与 background
  • 电容,三极管,场效应管
  • 光耦,发声器件,继电器,瞬态抑制二极管
  • 【102页PPT】新一代数字化转型信息化总体规划方案(附下载方式)
  • Coin与Token的区别解析
  • Python爬虫-解决爬取政务网站的附件,找不到附件链接的问题
  • 数学建模-评价类问题-优劣解距离法(TOPSIS)