java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Docker DockerFile部署jar项目包

Docker DockerFile部署java jar项目包及Mysql和Redis的详细过程

作者:dongcsdn123

Dockerfile是一种用于构建Docker镜像的文件格式,可以通过Dockerfile部署Java项目,这篇文章主要给大家介绍了关于Docker DockerFile部署java jar项目包及Mysql和Redis的详细过程,需要的朋友可以参考下

Docker运行环境要求系统为64位、Linux系统内核版本为 3.8以上

1. Docker安装

1.1 搭建gcc环境 (gcc是编程语言译器)

yum -y install gcc
yum -y install gcc-c++

1.2 安装需要的软件包

yum install -y yum-utils

1.3 装镜像仓库

因为docker的服务器是在国外,

所以有时候从仓库中下载镜像的时候会连接被拒绝或者连接超时的情况!

因此可以使用阿里云镜像仓库

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

1.4 新yum软件包索引

 yum makecache fast

1.5 安装docker引擎

yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

1.6 启动docker

systemctl start docker

1.7 查看docker版本

docker version

1.8 配置阿里云镜像加速

 在CentOS下配置镜像加速器

mkdir -p /etc/docker 
tee /etc/docker/daemon.json <<-'EOF'
{<!--{C}%3C!%2D%2D%20%2D%2D%3E-->
  "registry-mirrors": ["你个人的阿里云镜像加速器地址"]
}
EOF
systemctl daemon-reload
systemctl restart docker 

 docker已经安装完毕

2. docker安装Mysql

2.1 拉取mysql镜像

docker pull mysql:8.0.19

2.2 启动mysql

 # docker run 创建一个新的容器
docker run -d -p 23306:3306 --name mysql \
-v /usr/dcoker-mysql/log:/var/log/mysql \
-v /usr/docker-mysql/data:/var/lib/mysql \
-v /usr/docker-mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.19

命令参数说明:

参数说明:

如果不挂载数据卷,容器被删掉之后,mysql数据库里面的数据都会消失 

如果启动失败,可以执行docker logs -f -t --tail 1000  [容器id] ,查看日志,找失败的原因

2.3 查看容器

docker ps 

 进入容器执行

# docker exec 在运行的容器中执行命令
docker exec -it mysql mysql -uroot -p123456

参数说明: -i 以交互模式运行容器 -t 为容器重新分配一个伪输入终端 mysql -uroot -p123456 容器执行的命令,直接进入容器中的mysql 

*注意:安装的mysql是8.x版本的,默认的身份验证插件为caching_sha2_password,该插件不能使用旧版本的客户端来连接;如果所使用的Navicat版本较旧,需要修改身份验证插件才能登录。修改插件执行:ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

使用navicat连接后创建数表并插入数据, 如果出现乱码, 修改配置文件

执行exit退出容器, 在宿主机中挂载的配置文件编写

执行 vim /usr/docker-mysql/conf/my.cnf, 这个目录就是上面创建容器时挂载的数据卷

[client]
default_character_set=utf8
[mysqld]
collation_server=utf8_general_ci
character_set_server=utf8

 保存之后执行docker restart mysql重启容器

3. docker部署redis

3.1 拉取redis镜像

docker pull redis:6.0.8

3.2 创建配置文件

在宿主机上创建一个文件redis.conf, 路径可以自定义, 这里提供一个配置文档, 配置可根据自己的需求修改, 本文配置文件路径: /usr/docker-redis/conf/reids.conf

# bind 127.0.0.1
protected-mode no
port 6379
tcp-backlog 511
#设置密码为123456,可注释掉
requirepass 123456
timeout 0
tcp-keepalive 300
daemonize no
supervised no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile ""
databases 30
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir ./
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-disable-tcp-nodelay no
replica-priority 100
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
appendonly yes
appendfilename "appendonly.aof"
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000
slowlog-max-len 128
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes

* 注意:daemonize no是关闭守护线程,如果开启的话容器会启动不起来 

根据个人需求进行配置 

3.3 执行以下命令启动容器

docker run -d -p 6379:6379 --name redis \
-v /usr/docker-redis/conf/redis.conf:/etc/redis/redis.conf \
-v /usr/docker-redis/data:/data \
redis redis-server /etc/redis/redis.conf

参数说明:

启动redis容器之后,执行docker ps查看是否启动成功

如果没有启动成功可以执行命令docker logs <容器名称或id>查看日志;如果日志没有内容可能是配置中开启了守护线程的原因,关闭即可

启动成功后,执行docker exec -it redis redis-cli命令进入容器

如果设置了密码,执行auth 123456(123456配置中的密码,没有配置密码的直接跳过这步)

 到这里redis就安装完成了

4. docker部署java jar

4.1 将jar上传到需要构建镜像的目录

4.2 在当前目录下创建Dockerfile编写Dockerfile (最好命名Dockerfile,否则构建需要指定文件名)

#基础镜像使用jdk1.8
FROM openjdk:8-jdk-alpine
#作者
MAINTAINER pan
# VOLUME 指定临时文件目录为/tmp,在主机/var/lib/docker目录下创建了一个临时文件并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名
ADD ruoyi-admin.jar app.jar
# 运行jar包
RUN bash -c 'touch /app.jar'
# 为了缩短 Tomcat 启动时间,添加一个系统属性指向 “/dev/./urandom” 作为 Entropy Source
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
#ENTRYPOINT ["nohup","java","-jar","/data/app/ruoyi-admin.jar","&"]
#暴露8080端口
EXPOSE 8080

4.3 构建镜像 (需要在Dockerfile同级目录下构建,执行次命令)

docker build -t app:1.0 .    # 注意末尾的点不能去掉

4.4 构建成功后查看当前的镜像, 构建过程中如果没有拉取过openjdk:8-jdk-alpine,需要等待下载

docker images

4.5 启动后端项目镜像

 docker run -d --name app-container -p 8080:8080 app:1.0

4.6 查看容器是否启动成功

docker ps , 如果成功过则代表后端部署完成

可以访问进一步验证

后端部署完成

4.7 如果容器没有启动成功, 请看这一步

查看容器的日志

docker logs -f -t --tail 1000 [容器ID]

 通过日志确定问题,将报错进行复制,进行百度搜索,自行解决 

总结

到此这篇关于Docker DockerFile部署java jar项目包及Mysql和Redis的文章就介绍到这了,更多相关Docker DockerFile部署jar项目包内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文