一、任务
1.使用docker命令加交互模式部署springboot项目
2.使用Dockerfile加docker命令部署springboot项目
2.使用Dockerfile加docker-compose批处理部署springboot项目
二、项目简介
该项目为一个企业内部的资产管理系统(eam), 开发环境:
jdk8+mysql5.6+springboot
配置了spring.dataSource.schema
以及data
,即只需提供数据库,项目启动时自动创建表和初始数据
三、项目简介
- 安装centos7
- 安装docker
- 安装docker-compose
- 下载jdk8
- eam.jar(资产管理项目)
- 将jdk-8u181-linux-x64.tar.gz及eam.jar上传到centos7中,放在/eam/program中
四、任务一
#1.创建虚拟网桥eam_bridge,程序将通过网桥访问数据库
docker network create -d bridge eam_bridge
#2.从中央仓库中拉取官方centos镜像,最好把版本写到最全
docker pull centos:7.5.1804
#3.从中央仓库中拉取官方mysql镜像,最好把版本写到最全
docker pull mysql:5.6.41
#4.创建centos容器并设置一定参数
docker run -id --name eam --network eam_bridge -v /eam/program:/eam/program -p 80:80 centos:7.5.1804 /bin/bash
#解析
docker run -id \ #d:后台运行,i:以交互模式运行容器(不加i则直接结束)
--name eam \ #为启动的容器命名为eam
--network eam_bridge \ #指定连接eam_bridge虚拟网桥
-v /eam/program:/eam/program \ #将本地目录映/eam/program同步到容器/eam/program目录,为方便管理文件
-p 80:80 \ #将本地端口80和虚拟机端口80进行映射
centos:7.5.1804 \ #指定镜像
/bin/bash #-i指定交互执行命令,因为linux启动默认进入,可省略
#5.创建并启动mysql容器,
docker run -d -p 3306:3306 --name eam_mysql --network eam_bridge -v /eam/mysql/conf.d:/etc/mysql/conf.d -v /eam/mysql/data:/var/lib/mysql -v /eam/mysql/log:/var/log/mysql -e MYSQL_ROOT_PASSWORD=xxxx -e MYSQL_DATABASE=eam mysql:5.6.41 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
#解析
docker run -d -p 3306:3306 \ #d:后台运行,p:端口映射
--name eam_mysql --network eam_bridge \ #name:为容器取名,network:指定连接到的虚拟网络设备
-v /eam/mysql/conf.d:/etc/mysql/conf.d \ #同步mysql配置文件地址
-v /eam/mysql/data:/var/lib/mysql \ #同步mysql数据地址
-v /eam/mysql/log:/var/log/mysql \ #同步mysql日志地址
-e MYSQL_ROOT_PASSWORD=xxxx \ #指定mysql数据库root密码
-e MYSQL_DATABASE=eam \ #创建数据库
mysql:5.6.41 \ #指定使用镜像
--character-set-server=utf8mb4 \ #设置默认字符集
--collation-server=utf8mb4_unicode_ci #设置排序规则
#6.通过交互加伪终端进入容器/bin/bash
docker exec -it eam /bin/bash
#7.对eam容器执行更新
yum -y update
#8.将准备好的jdk8.tar.g以及eam.jar拷贝到容器指定目录
#可以通过docker cp命令,也可以放入之前做了同步的/eam/program下,这里就放在了/eam/program下
#9.进入/eam/program
cd /eam/program
#10.解压jdk到指定目录
tar -zxvf jdk-8u181-linux-x64.tar.gz -C /usr/local/java
#11.更改解压出来的文件夹为jdk,(为了环境变量中命名方便,无强迫症也可不改名,对应环境变量中要填对)
mv jdk1.8.0_181 jdk
#12.配置环境变量/etc/bashrc,在最末尾增加
JAVA_HOME=/usr/local/java/jdk
PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME PATH
#13.重新加载环境变量
source /etc/bashrc
#14.通过nohup命令运行java -jar eam.jar,使项目能够后台运行
nohup java -jar eam.jar &
四、任务二
1.Dockerfile
#在/eam/program中创建Dockerfile
vi Dockerfile
#Dockerfile内容开始###################################
FROM centos:7.5.1804
LABEL maintainer="arsenalzjx@gmail.com" \
version="1.0" \
description="jdk 1.8 &springboot-eam-0.0.1.jar"
WORKDIR /usr/local/java
ADD jdk-8u181-linux-x64.tar.gz /usr/local/java/
RUN yum -y update && \
mv jdk1.8.0_181 jdk
ENV JAVA_HOME /usr/local/java/jdk
ENV PATH $PATH:$JAVA_HOME/bin
EXPOSE 80
CMD ["/bin/bash","-c","java -jar /eam/program/eam.jar"]
#Dockerfile内容结束###################################
2.docker 命令启动
#1.创建虚拟网桥eam_bridge,程序将通过网桥访问数据库
docker network create -d bridge eam_bridge
#2.根据当前路径下的Dockerfile创建镜像,192.168.12.68是内部的registry,没有的可以自己命名
docker build -t 192.168.12.68/eam:0.0.1 .
#3.从中央仓库中拉取官方mysql镜像,最好把版本写到最全
docker pull mysql:5.6.41
#5.创建并启动mysql容器,
docker run -d -p 3306:3306 --name eam_mysql --network eam_bridge -v /eam/mysql/conf.d:/etc/mysql/conf.d -v /eam/mysql/data:/var/lib/mysql -v /eam/mysql/log:/var/log/mysql -e MYSQL_ROOT_PASSWORD=xxxx -e MYSQL_DATABASE=eam mysql:5.6.41 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
#解析
docker run -d -p 3306:3306 \ #d:后台运行,p:端口映射
--name eam_mysql --network eam_bridge \ #name:为容器取名,network:指定连接到的虚拟网络设备
-v /eam/mysql/conf.d:/etc/mysql/conf.d \ #同步mysql配置文件地址
-v /eam/mysql/data:/var/lib/mysql \ #同步mysql数据地址
-v /eam/mysql/log:/var/log/mysql \ #同步mysql日志地址
-e MYSQL_ROOT_PASSWORD=xxxx \ #指定mysql数据库root密码
-e MYSQL_DATABASE=eam \ #创建数据库
mysql:5.6.41 \ #指定使用镜像
--character-set-server=utf8mb4 \ #设置默认字符集
--collation-server=utf8mb4_unicode_ci #设置排序规则
#6.启动eam程序容器
docker run -id --name eam --network eam_bridge -v /eam/program:/eam/program -p 80:80 192.168.12.68/eam:0.0.1
五、任务三
1.Dockerfile
#在/eam/program中创建Dockerfile
vi Dockerfile
#Dockerfile内容开始###################################
FROM centos:7.5.1804
LABEL maintainer="arsenalzjx@gmail.com" \
version="1.0" \
description="jdk 1.8 &springboot-eam-0.0.1.jar"
WORKDIR /usr/local/java
ADD jdk-8u181-linux-x64.tar.gz /usr/local/java/
RUN yum -y update && \
mv jdk1.8.0_181 jdk
ENV JAVA_HOME /usr/local/java/jdk
ENV PATH $PATH:$JAVA_HOME/bin
EXPOSE 80
CMD ["/bin/bash","-c","java -jar /eam/program/eam.jar"]
#Dockerfile内容结束###################################
2.docker-compose.yml
#在/eam/program中创建docker-compose.yml
vi docker-compose.yml
docker-compose.yml
内容:
version: '3'
services:
eam_mysql:
image: mysql:5.6.41
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: xxxx
MYSQL_DATABASE: eam
volumes:
- /eam/mysql/conf.d:/etc/mysql/conf.d
- /eam/mysql/data:/var/lib/mysql
- /eam/mysql/log:/var/log/mysql
networks:
- eam_bridge
eam:
build: .
image: 192.168.12.68:5000/eam:0.0.1
ports:
- 80:80
depends_on:
- eam_mysql
volumes:
- /eam/program:/eam/program
networks:
- eam_bridge
networks:
eam_bridge:
driver: bridge
3.docker-compose命令
#构建根据yml中build构建镜像,
docker-compose build
#启动镜像
docker-compose up -d