JAVA项目在Linux环境下的部署(基于Docker容器)

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

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-41eyLKr1-1644476688349)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20220209160643495.png)]

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

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值