一、项目目录结构
/home
/spring-boot-docker
/bz_705.sql
/Dockerfile
/Hanlp
/files
/lt-main-0.0.1-SNAPSHOT.jar
/vue-docker
/Dockerfile
/dist
二、安装docker
参考链接: CentOS7.6安装docker.
//下均为root账户操作,否则请在下边的命令前加sudo
//1.查看Linux核心版本,3.10版本及以上才可以安装docker。
uname -r
//2.更新yum包(可以不用)
yum update
//3.查看docker是否曾经安装过
whereis docker
//如果安装过,则删除之前的版本
yum remove docker docker-common docker-selinux docker-engine
//4.安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
//5.设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
//6.查看docker版本,一般使用稳定版
yum list docker-ce --showduplicates | sort -r
//7.安装docker 默认安装最新版本
yum install docker-ce
//安装某特定版本需增加版本号(如18.06.3.ce-3.el7)
yum install docker-ce-18.06.3.ce
//8.启动docker
systemctl start docker
//9.开机启动
systemctl enable docker
//10. 验证安装是否成功 存在Client和Server则成功
docker version
三、文件准备(忽略)
1、后端准备
1)修改配置文件
LabelingTool 后端 lt-main模块下的配置文件,修改hanlp.properties中
//linux docker下hanlp路径
root=/usr/Hanlp
2)后端打成jar包
其中,注意在lt-main模块下的pom.xml里面申明打包插件和全局入口。
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!-- 指定该Main Class为全局的唯一入口 -->
<mainClass>cn.njust.label.main.LtMainApplication</mainClass>
<layout>ZIP</layout>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal><!--可以把依赖的包都打包到生成的Jar包中-->
</goals>
</execution>
</executions>
</plugin>
打包完成,你将在lt-main的target目录下看到
lt-main-0.0.1-SNAPSHOT.jar
2、前端准备
// 在前端项目的根目录下执行
vue-cli-service build
//然后将dist文件夹打成zip压缩包
注意在前端源代码 vue.config.js里面最后一行的 “/”:"/"
publicPath:process.env.NODE_ENV==="production"?"/":"/"
会对Dockerfile里面
COPY dist/ /usr/share/nginx/html/
这一项产生影响 !
3、拷贝文件
1)后端文件
在/home下创建目录 spring-boot-docker
cd /home
sudo mkdir spring-boot-docker
PS:
//安装支持ZIP的工具
yum install -y unzip zip
//把文件解压到当前目录下
unzip data.zip
//如果要把文件解压到指定的目录下,需要用到-d参数。
unzip -d Hanlp data.zip
在目录 spring-boot-docker 复制四个文件 bz_705.sql 、 lt-main-0.0.1-SNAPSHOT.jar 、 Hanlp文件夹 和 Dockfile文件。
ls
//bz_0628.sql data.zip Dockerfile Hanlp lt-main-0.0.1-SNAPSHOT.jar
其中,后端的Dockerfile文件内容如下:
# 使用 JDK 8 环境为基础环境,如果镜像不是本地的将会从 DockerHub 进行下载
FROM openjdk:8-jdk-alpine
# 在宿主机的 /var/lib/docker 目录下创建一个临时文件并把它链接到 tomcat 容器的工作目录 /tmp目录
VOLUME /tmp
# 复制文件并重命名 lt-main-0.0.1-SNAPSHOT.jar 表示打包后的 jar 包名称
ADD lt-main-0.0.1-SNAPSHOT.jar app.jar
# 为了缩短Tomcat启动时间,添加 java.security.egd 的系统属性指向 /dev/urandom 作为ENTRYPOINT
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
2)前端文件
在/home下创建目录 vue-docker
cd /home
sudo mkdir vue-docker
向该文件夹里拷贝
dist.zip
和前端的Dockerfile
# 以官方的nginx镜像为基础进行构建
FROM nginx
# 将当前dockerfile所在目录下的dist目录的内容拷贝到容器的/usr/share/nginx/html/下
COPY dist/ /usr/share/nginx/html/
3)mysql文件
拷贝sql文件
bz_705.sql
到 /home/spring-boot-docker 目录下
四、部署mysql
1、拉取mysql镜像
//拉取镜像
docker pull mysql:5.7
//查看镜像
docker images
//REPOSITORY TAG IMAGE ID CREATED SIZE
//mysql 5.7 09361feeb475 7 days ago 447MB
2、构建mysql容器
1)启动mysql容器
docker run -p 3306:3306 --name mysql0707 -e MYSQL_ROOT_PASSWORD=root -it mysql:5.7
//mysql容器开启后,该shell窗口会被占用
//重开一个shell 查看容器
docker ps -a
2)配置容器参数
参考链接: ubuntu18.04 安装 mysql5.7.
// 首先转入管理员权限,输入密码
su do
//进入mysql容器
docker exec -it mysql0707 bash
//root账号密码登录
mysql -uroot -proot
//使用mysql库的user表
use mysql;
select user, authentication_string,plugin from user;
//修改密码
update mysql.user set authentication_string=PASSWORD('root'), plugin='mysql_native_password' where user='root';
//刷新权限
flush privileges;
//退出mysql
exit
//容器内没有安装vim,需要先apt-get安装
apt-get update
apt-get install vim
//修改配置文件,注释掉bind-address = 127.0.0.1
$ sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
//保存退出,然后进入mysql服务,执行授权命令:
$ mysql -uroot -proot
//允许访问
mysql> grant all on *.* to root@'%' identified by 'root' with grant option;
Query OK, 0 rows affected, 1 warning (0.00 sec)
//刷新
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
//退出
mysql> exit
Bye
//退出容器
exit
3)导入sql数据到mysql容器
//复制bz_705.sql到mysql容器
sudo docker cp /home/spring-boot-docker/bz_705.sql mysql0707:/usr/bz_705.sql
//进入mysql容器
docker exec -it mysql0707 bash
//root账号密码登录
mysql -uroot -proot
//创建bz数据库
create database bz;
use bz;
//导入数据
source /usr/bz_705.sql;
//展示
mysql> show tables;
//略
PS:
从主机复制到容器sudo docker cp host_path containerID:container_path
从容器复制到主机sudo docker cp containerID:container_path host_path
五、部署jar包
1、部署
1)创建该jar包的镜像
// 首先跳转到jar包所在目录
cd /home/spring-boot-docker
//然后构建它的镜像,命名为spring0707,注意最后有一个点
docker image build -t spring0707 .
//查看镜像
docker images
2)构建并运行容器
使用上一步的镜像构建容器(容器名还是叫 spring0707),并将其和mysql容器(mysql0707)连接
// --link非必须
docker run -p 8080:8080 --name spring0707 --link mysql0707:localhost spring0707
只要后端配置文件里mysql的IP配置了
spring:
datasource:
url: jdbc:mysql://1.15.228.180:3306/bz?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
也可以不用写 --link
docker run -p 8080:8080 --name spring0707 spring0707
3)往容器里拷贝Hanlp和files
上一步肯定会报错,因为该jar包依赖的Hanlp还没装到容器里
// 这里是从主机复制到容器
sudo docker cp /home/spring-boot-docker/Hanlp spring0707:/usr/Hanlp
sudo docker cp /home/spring-boot-docker/files spring0707:/usr/files
4)重启后端容器
重启spring0707容器,等待20秒,等sprig boot 启动完毕
docker restart spring0707
//查看容器
docker ps -a
2、运行
在浏览器输入
http://1.15.228.180:8081/swagger-ui.html#/
六、部署VUE
参考链接: Docker基本使用以及实战部署vue项目.
1、创建nginx镜像
// 从官方下载一个最新的nginx镜像
docker pull nginx
将dist.zip复制到vue-docker目录下,然后解压
cd /home/vue-docker
unzip dist.zip
根据Dockerfile构建出带有dist目录内容的nginx镜像,最后的点号不能少!
# 构建镜像,镜像名为vue0707
docker build -t vue0707 .
查看镜像
docker images
2、创建运行容器
创建好镜像之后,我们就可以基于该镜像创建并运行容器了,如:
# 基于vuenginx运行容器
docker run -itd --name vue0707 -p 8083:80 vue0707
# 查看容器信息
docker ps -a
3、结果
在浏览器内输入
http://1.15.228.180:8083/
即可访问
七、部署redis
从官网获取镜像
docker pull redis:latest
//检查镜像
docker images
建立并运行容器
// redis默认端口是6379
docker run -d --name redis0706 -p 6379:6379 redis:latest
//检查容器
docker ps -a
八、运行
浏览器输入
http://1.15.228.180:8083/#/home
即可访问