Docker DockerFile部署java jar项目包及Mysql和Redis的详细过程
作者:dongcsdn123
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
命令参数说明:
参数说明:
- -d 后台运行
- -p 33060:3306 端口映射,宿主机的33060端口映射到容器3306端口
- --name mysql 容器名称,可以自定义
- -v /usr/dcoker-mysql/log:/var/log/mysql 宿主机/usr/dcoker-mysql/log目录与容器的/var/log/mysql目录挂载,该目录保存了mysql的日志
- -v /usr/docker-mysql/data:/var/lib/mysql 也是挂载,该目录是mysql数据储存的位置
- -v /usr/docker-mysql/conf:/etc/mysql/conf.d 也是挂载,该目录放置配置文件的
- -e MYSQL_ROOT_PASSWORD=123456 设置环境变量,该变量是设置root用户的密码,可自行修改
- mysql:8.0.19 镜像名称以及tag
如果不挂载数据卷,容器被删掉之后,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
参数说明:
- -d 后台运行
- -p 6379:6379 端口映射,<宿主机端口>:<容器端口>
- --name redis 容器名称,可以自定义
- -v /usr/docker-redis/conf/redis.conf:/etc/redis/redis.conf 宿主机/usr/docker-redis/conf/redis.conf文件与容器的/etc/redis/redis.conf文件挂载
- -v /usr/docker-redis/data:/data 也是挂载,该目录是redis数据持久化文件储存的位置
- redis 镜像名称
- redis-server /etc/redis/redis.conf 以上面redis.conf文件写的配置启动redis
启动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项目包内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!