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
所有运行在容器里面的应用:

docker 部署的java程序在哪找 docker部署java环境_nginx

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服务器的同一个目录中

docker 部署的java程序在哪找 docker部署java环境_docker 部署的java程序在哪找_02

4、构建docker镜像
docker build -t yylq-ds-server:v1.0 .

#yylq-ds-server为镜像名称  v1.0是镜像版本  命令的最后有个“.” 表示在当前目录下面寻找 Dockerfile 文件

docker 部署的java程序在哪找 docker部署java环境_docker_03

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

docker 部署的java程序在哪找 docker部署java环境_linux_04