在日常部署中,我们常使用的传统的部署方式有:
- tomcat部署前端后台的方式。即将前端打包的文件和后台打包的war包都放入tomcat中的方式。
- Nginx+jar包的方式
今天介绍一下,简单好用的docker部署的方法,docker部署与传统的部署方式相比较的优点就是不需要安装各种各样的环境,比如java、mysql、nginx或者tomcat、redis等等。
1.首先安装docker环境(这里以ubuntu 16.04为例)
sudo apt-get install docker.io
2.查看是否安装成功,如果显示docker的版本号等信息,表示安装成功。
root@ubuntu:/# docker --version
Docker version 18.09.7, build 2d0083d
3.安装docker-compose
curl -L "https://github.com/docker/compose/releases/download/1.26.1/docker-compose-$(uname -s)-$(uname -m)" > docker-compose
chmod +x /usr/local/bin/docker-compose
4.查看是否安装成功,如果显示docker-compose的版本号等信息,表示安装成功。
root@ubuntu:/# docker-compose --version
docker-compose version 1.24.0, build 0aa59064
5.接下来我们可以在主目录下创建一个compose的文件夹
root@ubuntu:/# cd /
root@ubuntu:/# mkdir compose
6.在compose 文件夹中分别创建名为java(存放后端jar文件,假设是demo.jar文件)、html(存放前端打包文件,假设是dist文件)、mysql的文件夹。
7.在compose文件夹下,创建一个docker-compose.yml文件
8.开始编写docker-compose.yml文件(如下所示)
version: "2" #yml版本号
services:
java:
container_name: my-java #java后台在启动后的的容器名称
image: java:8 #基于的java版本
ports:
- "8080:8080" #对外暴露的端口,后台的端口是8080,你可以对外暴露8080,也可以暴露 成8090,写法就是8090:8080,这里都行
restart: always #相当于服务器断电后,这个docker容器自动重启
volumes:
- ./java/demo.jar:/java/demo.jar #将当前主机的/java/demo.jar挂载到java镜像对应的/java/demo.jar下
- ./java/config/application.yml:/config/application.yml #挂载yml配置文件
entrypoint: java -jar /java/demo.jar #启动容器后执行的命令
depends_on:
- mysql #依赖mysql,docker会优先启动mysql服务
mysql:
container_name: my-mysql #mysql容器的名字
image: mysql:5.7.25 #基于mysql镜像的版本
ports:
- "3306:3306" #暴露的端口
restart: always
environment:
- "MYSQL_ROOT_PASSWORD=123456" #初始化mysql的密码为123456
- "MYSQL_DATABASE=test" #初始化mysql的数据库为test,这里可以跟你实际使用数据库名字一致
- "MYSQL_ROOT_HOST=%"
#容器名称
#数据卷映射关系,也就是把本地的目录,和mysql容器中的目录,进行对应映射。
volumes:
- "./mysql/data/:/var/lib/mysql"
- "./mysql/etc:/etc/mysql/conf.d"
- "/etc/localtime:/etc/localtime"
nginx:
container_name: my-nginx #nginx容器的名字
image: nginx:1.16.0 #基于nginx镜像的版本
ports:
- 80:80
restart: always
volumes:
- "./html:/usr/share/nginx/html"
- "./html/conf:/etc/nginx/conf.d"
depends_on:
- java
9.执行docker-compose up -d --build程序即可启动
10.执行docker ps 看程序是否正常启动。
完成!!