JAVA项目在Linux环境下的部署(基于Docker容器)
本文主要以图文的形式讲解项目在Linux环境下的部署,涉及在Docker容器中安装MySQL、Redis、Nginx以及SpringBoot应用部署,基于CenterOS 8。
Docker环境安装
安装yum-utils:
yum install -y yum-utils device-mapper-persistent-data lvm2
为yum源添加docker仓库位置:
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装docker:
yum install docker-ce
启动docker:
systemctl start docker
JAVA环境安装
docker pull java:8
MySQL安装
下载MySQL5.7的docker镜像:
docker pull mysql:5.7
使用如下命令启动MySQL服务:
docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
参数说明
- -p 3306:3306:将容器的3306端口映射到主机的3306端口
- -v /mydata/mysql/conf:/etc/mysql:将配置文件夹挂在到主机
- -v /mydata/mysql/log:/var/log/mysql:将日志文件夹挂载到主机
- -v /mydata/mysql/data:/var/lib/mysql/:将数据文件夹挂载到主机
- -e MYSQL_ROOT_PASSWORD=root:初始化root用户的密码(密码可自定义更改)
- -i 以交互模式运行容器,通常与 -t 同时使用;
- -t 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
- -d 后台运行容器,并返回容器ID;
- –restart=always 挂掉自动重启
进入运行MySQL的docker容器:
docker exec -it mysql /bin/bash
使用MySQL命令打开客户端:
mysql -uroot -proot --default-character-set=utf8mb4
创建 yylq_ds 数据库:
create database yylq_ds character set utf8mb4 COLLATE = utf8mb4_unicode_ci;
将yylq_ds.sql上传到Linux服务器上并拷贝到mysql容器的/目录下:
docker cp /mydata/yylq_ds.sql mysql:/
将sql文件导入到数据库:
use yylq_ds;
source /yylq_ds.sql;
附 MySQL 5.7 root 用户密码修改
#在MySQL 5.7 password字段已从mysql.user表中删除,新的字段名是“authenticalion_string”.
#选择数据库:
use mysql;
#更新root的密码:
update user set authentication_string=password('新密码') where user='root' and Host='localhost';
#刷新权限:
flush privileges;
Redis安装
下载Redis6.0的docker镜像:
docker pull redis:6
使用如下命令启动Redis服务:
docker run -p 6379:6379 --name redis \
-v /mydata/redis/data:/data \
-d redis:6 redis-server --appendonly yes
可以进入Redis容器使用redis-cli命令进行连接:
docker exec -it redis redis-cli
Nginx安装
下载Nginx1.14.1的docker镜像:
docker pull nginx:1.14.1
先运行一次容器(为了拷贝配置文件):
docker run -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx \
-d nginx:1.14.1
将容器内的配置文件拷贝到指定目录:
docker container cp nginx:/etc/nginx /mydata/nginx/
修改文件名称:
cd /mydata/nginx/
mv nginx conf
终止并删除容器:
docker stop nginx
docker rm nginx
使用如下命令启动Nginx服务:
docker run -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx \
-v /mydata/nginx/conf:/etc/nginx \
-d nginx:1.14.1
Docker全部环境安装完成
所有下载镜像文件:
REPOSITORY TAG IMAGE ID CREATED SIZE
redis 6 071538dbbd71 2 weeks ago 113MB
mysql 5.7 7faa3c53e6d6 15 months ago 448MB
nginx 1.14.1 0346349a1a64 3 years ago 109MB
java 8 d23bdf5b1b1b 5 years ago 643MB
所有运行在容器里面的应用:
SpringBoot应用部署
1、把服务打包成jar包
2、创建Dockerfile文件,文件名为Dockerfile,没有扩展名
# 设置本镜像需要使用的基础镜像
FROM java:8
# 把jar包添加到镜像中
ADD yylq-ds.jar /app.jar
# 镜像暴露的端口
EXPOSE 8199
RUN bash -c 'touch /app.jar'
# 容器启动命令
ENTRYPOINT ["java","-jar","/app.jar"]
# 设置时区
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
3、把jar包和Dockerfile放在linux服务器的同一个目录中
4、构建docker镜像
docker build -t yylq-ds-server:v1.0 .
#yylq-ds-server为镜像名称 v1.0是镜像版本 命令的最后有个“.” 表示在当前目录下面寻找 Dockerfile 文件
5、查看镜像
docker images
6、启动
docker run -p 8199:8199 --name yylq-ds-server \
-v /mydata/yylq-ds-server/html:/usr/share/yylq-ds-server/html \
-v /mydata/yylq-ds-server/logs:/var/log/yylq-ds-server \
-d yylq-ds-server:v1.0
7、查看镜像
docker ps -a