七、Java多人博客系统-2.0版本-docker部署

docker是当下很热门的技术,是对之前的部署系统方式的彻底改变。之前部署系统,需要安装数据库、初始化数据库,安装jdk,配置jdk,部署应用程序,修改配置文件等,很繁琐。一般现场运维人员很难搞定,现场也会出现很多公司开发环境没有的问题。使用docker技术,只需要运行镜像即可,省去了环境安装、变量配置等繁琐的事情,现场运维人员经过简单培训后可以独立部署系统。移植性好,公司开发环境直接可以部署到现场。   使用docker技术,主要有两个个关键步骤:1、构建镜像 2、运行镜像。构建镜像,需要将基础支持软件、业务系统打成镜像包。运行镜像,需要将构建的镜像运行起来,外部可以访问。 一、docker理解   docker镜像可以理解为一个高度内聚的应用包,包含运行环境、配置等,可以移植到各个环境中运行。例如一个java应用镜像,运行这个镜像只需要准备一台Linux服务器,服务器上不需要装任何jdk,只需要安装docker,就可以运行该镜像。省去了常规的安装运行环境,配置环境变量,启动各种服务等各种繁琐步骤。 二、本地构建docker应用   对于一个信息系统,镜像一般包括:   1. mariadb镜像:包含数据库安装文件和业务数据库。数据库安装文件,是数据库基础支持软件。业务数据库是业务系统需要的数据库,业务系统需要提供初始化脚本。   2. nginx镜像:包含nginx基础镜像和业务前端代码。nginx基础镜像是nginx运行软件。作为前后端分离的项目,nginx中存放前端静态页面。   3. java镜像:包含jdk和业务应用程序。jdk是java应用运行基础环境。业务应用是后端系统,向前端提供展示数据。   以上是信息系统一种部署方式,另外可以将基础镜像和初始化镜像分开,例如mariadb镜像可以分为mariadb安装镜像和业务系统初始化镜像。   先在本地环境安装docker,docker中配置仓库地址,指明了镜像存放路径,例如tim:5000,同时需要在hosts中配置tim的映射。      在系统的hosts文件中配置映射127.0.0.1 tim   1) mariadb镜像:   1、 准备业务系统初始化脚本。   2、 修改数据库配置文件等   需要准备的文件如下:      utf8mb4.cnf 修改数据库编码字符集为utf8格式,解决中文汉字乱码问题。   run.txt 运行镜像命令。构建镜像非必需文件,这里只是记录运行命令。   blog.sql 初始化脚本。业务系统的初始化镜像,包含建库脚本、建表脚本、初始化数据脚本等。   Dockerfile 生成镜像说明文档。说明镜像如何生成,已经运行时执行的命令。   install_data.sh 数据库启动后执行的脚本。因为mariadb镜像需要在镜像运行后,初始化业务系统数据库,需要该脚本执行业务系统初始化脚本。   Makefile 执行make命令后,执行的镜像生成命令。一般是移除上次的镜像,再生成新的镜像。   重点是Dockerfile文件,内容如下: 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 #基础镜像使用daocloud.io/library/mysql:8,新构建的镜像以此镜像为基础 FROM daocloud.io/library/mysql:8 #定义工作目录变量 ENV WORK_PATH /usr/local/work #定义会被容器自动执行的目录 ENV AUTO_RUN_DIR /docker-entrypoint-initdb.d #定义sql文件名,这里指向业务系统初始化脚本 ENV FILE_0 blog.sql #定义shell文件名,指向待指向的shell脚本 ENV INSTALL_DATA_SHELL install_data.sh #执行shell命令,创建文件夹 RUN mkdir -p $WORK_PATH #把数据库初始化数据的文件复制到工作目录下 COPY ./$FILE_0 $WORK_PATH/ #把要执行的shell文件放到/docker-entrypoint-initdb.d/目录下,高版本mysql容器会自动执行这个shell(5.7.4不能执行) COPY ./$INSTALL_DATA_SHELL $AUTO_RUN_DIR/ #mysql默认字符集是latain,而它是不支持中文的,utf8mb4 是 utf8 的超集并完全兼容utf8。修改字符集 COPY utf8mb4.cnf /etc/mysql/conf.d/ #给执行文件增加可执行权限 RUN chmod a+x $AUTO_RUN_DIR/$INSTALL_DATA_SHELL   install_data.sh文件主要是镜像在运行后,自动执行的命令,主要是登录到已经启动的mysql镜像中,执行初始化脚本。内容如下: 1 2 3 #!/bin/bash mysql -uroot -p$MYSQL_ROOT_PASSWORD <9001/tcp blog-web aec1c87b63ed tim:5000/blog:dev-test "java -jar blog-1...." 55 seconds ago Up About a minute 0.0.0.0:9091->9091/tcp blog 0c5dcc8543ca tim:5000/blog-mariadb:dev-test "docker-entrypoint..." About a minute ago Up About a minute 0.0.0.0:3306->3306/tcp, 33060/tcp mysql-blog   这样系统需要的3个镜像就运行起来了,在浏览器通过8080端口就能访问系统。      附docker常用命令: docker images 查看所有镜像 docker ps -a 查看所有容器 docker stop containerID 停止容器 docker rm containerID 移除容器 docker rmi imagesID 移除镜像 docker exec -it containerId /bin/bash 进入到容器内部https://www.cnblogs.com/yangtze-yufei/p/9719264.html
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信