为女朋友写一个小程序(一)— —目的与需求
为女朋友写一个小程序(二)— —数据库设计
为女朋友写一个小程序(三)— —基于springboot的服务器端接口设计与实现
为女朋友写一个小程序(四)— —前端小程序的设计与实现
为女朋友写一个小程序(五)— —如何用docker简化部署(本文)
为女朋友写一个小程序(六)— —结合docker实现devOps
为女朋友写一个小程序(七)— —优化引进redis(未编码,未写)
为女朋友写一个小程序(八)— —基于moongodb实现即时通讯(未编码,未写)
以此文致敬情人节哩 嘿嘿
使用docker是因为自己想玩玩docker,之前了解过docker,说白了就是一个虚拟的操作系统,其操作与直接使用虚拟机操作没有什么大的区别。
使用docker进行部署可以简化部署过程,正如这个小程序为例子,正规流程部署的步骤应是如下:
对于高手来说其在一个机器上部署算是简单,但是如果是重头来开始部署,还是需要花费一定的时间的,具体可以参考很久之前写的文章 装JDK,装MYSQL
切换成docker进行部署的时候,步骤就会简化如下:
另外,用了docker之后也方便对系统进行管理,因为系统上不会存在JAVA,MYSQL进程,直接面向docker进行管理,当然了,也会加大问题的复杂性,排查时,时常要进入docker容器的tty,有些复杂
使用docker的时候主要还是看了《第一本docker书》,这本书讲的还是比较全面,涉及了docker的入门基本知识,也涵盖了实战的实例,看过一次之后要用起来还是可以的。
其他的知识还是关于linux的知识,docker镜像使用的操作系统主要还是乌班图,CentOS等等,了解了linux知识方便对docker镜像的维护,之前主要过了两本书《Linux Shell脚本攻略》《鸟哥的私房菜》,过了之后对于linux的初、中级使用就没有什么压力了
1、下载docker
下载docker,根据《第一本docker书》介绍的yum下载方式下载docker,一条命令解决所有问题
2、选择镜像
登录官方镜像库,进行搜索,建议使用的镜像最好都是由官方提供的,因为这里的程序用的也都是标准的东西,所以不需做什么自定义的镜像操作(服务器端程序使用的wrapper进行打包,JAVA docker镜像主要就是提供一个JDK环境,使用脚本自己去镜像内部启动服务器端程序),镜像的使用方法也有指南,用起来非常的方便,本小程序使用如下镜像
[root@VM_12_99_centos ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/maven 3.5-jdk-8 908bdbacafc2 11 months ago 748 MB
docker.io/mysql 5.7 5d4d51c57ea8 11 months ago 374 MB
docker.io/mysql latest 5d4d51c57ea8 11 months ago 374 MB
docker.io/java 8 d23bdf5b1b1b 2 years ago 643 MB
3、编写启动脚本
[root@VM_12_99_centos platform]# tree -L 3
.
|-- java-for-run
| `-- docker
| `-- run.sh #docker JAVA镜像启动脚本
`-- mysql
|-- data
| |-- auto.cnf
| |-- ca-key.pem
| |-- ca.pem
| |-- client-cert.pem
| |-- client-key.pem
| |-- db_target
| |-- ib_buffer_pool
| |-- ibdata1
| |-- ib_logfile0
| |-- ib_logfile1
| |-- ibtmp1
| |-- mysql
| |-- performance_schema
| |-- private_key.pem
| |-- public_key.pem
| |-- server-cert.pem
| |-- server-key.pem
| `-- sys
|-- docker
| `-- run.sh #docker MYSQL镜像启动脚本
|-- etc
| `-- my.cnf
`-- init
3.1、编写MYSQL docker镜像启动脚本
#!/bin/bash
docker run -ti --name target-mysql -v /etc/localtime:/etc/localtime -v /apps/platform/mysql/etc:/etc/mysql/conf.d -v /apps/platform/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=--KIKI$2018 -p ****:**** -d mysql:5.7
因为其中有几个需要自定义的地方,所以使用了启动脚本,自定义的地方:
PS:sql文件直接通过人工导入
3.2、编写docker JAVA镜像启动脚本
编写脚本如下:
#!/bin/bash
docker run --rm -v /apps/service:/apps/service -v /etc/localtime:/etc/localtime -v /apps/data:/apps/data -v /apps/crt:/apps/crt -w /apps/service --name target-java --link target-mysql:mysql -p **:** -p ***:*** -d -t -i java:8 /bin/bash
docker exec target-java ./kiki-target/bin/kiki-target start
因为其中有几个需要自定义的地方,所以使用了启动脚本,自定义的地方:
4、启动
先启动MYSQL镜像,再启动JAVA docker镜像
今天情人节哦,没有人发红包的话不介意发到这儿来~
如果对您有帮助,希望给我一分鼓励~愿你我皆不忘初心!