JAVA项目在Linux环境下的部署(基于Docker容器)
本文主要以图文的形式讲解项目在Linux环境下的部署,涉及在Docker容器中安装MySQL、Redis、Nginx以及SpringBoot应用部署,基于CenterOS 8。
Docker环境安装
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce
systemctl start docker
JAVA环境安装
docker pull java:8
MySQL安装
docker pull mysql:5.7
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 -uroot -proot --default-character-set=utf8mb4
create database yylq_ds character set utf8mb4 COLLATE = utf8mb4_unicode_ci;
docker cp /mydata/yylq_ds.sql mysql:/
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安装
docker pull redis:6
docker run -p 6379:6379 --name redis \
-v /mydata/redis/data:/data \
-d redis:6 redis-server --appendonly yes
docker exec -it redis redis-cli
Nginx安装
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
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