基于docker完整部署java项目,详细 linux和openEuler部署
基于docker部署Java项目,完整流程;MySQL、Redis、ngixn、jar、minio;Linux、openEuler部署
·
openEuler部署Java项目,基于docker离线部署 Linux部署docker
简介:1.完整项目部署流程 从openEuler离线安装docker整个流程
2.镜像文件的准备MySql、redis、nginx、jdk和Java项目、minio镜像
3.容器的创建,容器运行命令的解析 数据卷的挂在,容器网络的绑定
4.整个项目的启动,日志的查看,容器相关的命令
一、基于欧拉docker离线安装
## 在cenos7 服务器上面下载 然后将下载好的docker放到服务器上面
1.wget https://download.docker.com/linux/static/stable/x86_64/docker-20.10.23.tgz
# 解压
2.tar zxvf docker-20.10.23.tgz
# 将docker相关文件放到 bin目录下
cp docker/* /usr/bin/
# 下面擦操作是将docker做成系统服务
vim /etc/systemd/system/docker.service (创建配置文件)
# 下面是配置内容:
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd --selinux-enabled=false --insecure-registry=127.0.0.1
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
- 下面命令进行授权 启动docker
# 授予可执行权
1.chmod +x /etc/systemd/system/docker.service
# 重载系统配置
systemctl daemon-reload
# 启动docker
systemctl start docker
# 设置开机自启
systemctl enable docker
# 查看启动状态
systemctl status docker
# 查看docker版本
docker --version
Docker version 20.10.23, build 7155243
下面是一些操作流程:
- 创建目录
- docker下载
- docker版本查看
4.docker常用命令
以下是 Docker 中一些常用的命令:
镜像相关命令:
docker images:列出当前系统中的镜像。
docker pull <镜像名称>:从 Docker Hub 上下载指定名称的镜像。
docker build -t <镜像名称> <Dockerfile路径>:根据 Dockerfile 构建自定义的镜像。
docker push <镜像名称>:将本地的镜像推送到 Docker Hub 或私有容器注册表。
docker rmi <镜像名称或镜像ID>:删除指定的镜像。
容器相关命令:
docker run <镜像名称>:在容器中运行指定的镜像。
docker ps:列出正在运行的容器。
docker ps -a:列出所有的容器,包括已停止的容器。
docker start <容器ID或容器名称>:启动已停止的容器。
docker stop <容器ID或容器名称>:停止正在运行的容器。
docker restart <容器ID或容器名称>:重启容器。
docker rm <容器ID或容器名称>:删除指定的容器。
日志和查看命令:
docker logs <容器ID或容器名称>:查看容器的日志。
docker exec -it <容器ID或容器名称> <命令>:在正在运行的容器中执行命令。
docker inspect <容器ID或容器名称>:查看容器的详细信息。
网络相关命令:
docker network ls:列出 Docker 中的网络。
docker network create <网络名称>:创建一个自定义的 Docker 网络。
docker network connect <网络名称> <容器ID或容器名称>:将容器连接到指定的网络。
docker network disconnect <网络名称> <容器ID或容器名称>:将容器从指定的网络断开连接。
停止并删除所有容器
docker stop $(docker ps -aq)
docker rm $(docker ps -aq)
删除所有镜像:
docker rmi $(docker images -aq)
Ubuntu 或 Debian:
sudo apt-get purge docker-ce docker-ce-cli containerd.io
CentOS
sudo yum remove docker-ce docker-ce-cli containerd.io
打开终端并执行以下命令移除 Docker 客户端:
sudo rm -rf /Applications/Docker.app
删除 Docker 配置和相关文件:
rm -rf ~/Library/Containers/com.docker.docker
卸载docker
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine```
二、基于欧拉docker安装mysql
在有网的情况下,可以直接下载安装;在没有网的情况下,可以将准备好的镜像打包,然后上传到服务器上,然后解压镜像;这里建议创建同一个docker环境下的网络,后面容器都用同一个网络,这样容器可以直接通过容器名成互连,不用担心容器内ip地址的变化;下面两种方式进行示范
相关的命令:
有网的情况下
1.镜像拉取
docker pull mysql
2.查看镜像
docker images
3.创建网络
docker network create wis
docker network ls
4.运行mysql
docker run -d --name mysql --restart always -p 3306:3306 -v /docker/mysql/data:/var/lib/mysql -v /docker/mysql/init:/docker-entrypoint-initdb.d -v /docker/mysql/conf:/etc/mysql/conf.d -e TZ=Asia/Shanghai -e MYSQL_ROOT_PASSWORD=123 --network wis mysql
5.查看容器是否成功运行
docker ps
6.查看日志
docker logs -f mysql
没有网的情况下,只需要将打包好的镜像解压成镜像即可,在运行就行
1.打包镜像
docker save -o mysql.tar mysql
2.解压镜像
docker load -i mysql.tar
容器运行指令解析
run #运行容器
-d #后台运行(可选)
--name #容器名称
--restart #开机自启(可选)
-p #端口映射
-v #数据卷挂载(可选)
-e #环境配置(可选)
--network #指定容器网络(可选)
-
MySQL下载
-
有网安装
-
离线安装
三、安装redis
redis安装和MySQL安装类似;如果在有网络的情况拉取镜像,运行容器;如果没有网需要准备好镜像包,解压镜像包,再运行容器
这里没有设置redis密码
有网:
1.docker pull redis #拉取最新镜像
2.docker images # 查看镜像
3.docker run -d --name redis --restart always -p 6379:6379 -e TZ=Asia/Shanghai --network wis redis #运行容器
4.docker ps #查看容器运行状况
5.docker logs -f redis # 查看日志
离线:
1.docker save -o redis.tar redis #打包好redis镜像
2.docker load -i redis.tar #解压准备好的redis镜像
3.运行容器跟上面步骤一样
- 查看redis镜像
- 运行redis容器
!没有](https://img-blog.csdnimg.cn/direct/1283823274af4c7cad7dac97e3390eef.png)
- 查看容器运行情况
- 离线安装打包镜像
-解压redis镜像包
- 剩下步骤跟上面一样
四、安装后端环境
这里我们直接通过dockerfile构建Java后端运行环境,使用的jdk8;打包好jar包文件
1.上传java程序包和Dockerfile文件,用来构建后端镜像文件
2.构建镜像
docker build -t wis . #构建镜像文件
3.运行容器
docker run -d --name wis --restart always -p 20001:8080 --network wis wis
- Dockerfile文件 --直接写一份dockerfile文件就行,也可以仿照下面的
- 构建镜像
- 运行容器
- 查看容器是否允许成功
- 查看日志是否报错
五、安装nginx
nginx安装跟上面差不多,数据卷挂载要注意,nginx.conf配置文件要挂载前面,前端静态文件挂载在后面,踩过坑,希望大家不要踩坑,也可以自己去试下;这里我的配置文件端口20002 前端静态文件路径/docker/nginx/data/dist,需要将准备好的静态文件放在这个映射出来的目录;同时需要将准备好的nginx.conf配置文件放到数据卷挂载的目录下
创建的nginx的时候,需要提前运行好后端容器,因为前端要访问后端,否则前端容器运行会报错
前面的步骤大家应该也会来了,我就不重复写
1.mkdir -p /docker/nginx/data # 创建好挂载的目录需要存放nginx.conf配置文件和前端静态文件
docker run -d --name nginx --restart always -p 20002:20002 -v /docker/nginx/nginx.conf:/etc/nginx/nginx.conf -v /docker/nginx/data/dist:/docker/nginx/data/dist -e TZ=Asia/Shanghai --network wis nginx
- 创建对应的目录
- 上传配置文件和静态文件在对应的目录下
六、访问
访问前需要把前端端口开放出来,这里我偷个懒,直接关闭防火墙 (建议:开放指定端口,不要关闭防火墙,可以看哦上一篇文章,端口如何开放)
systemctl stop firewalld
访问方式:ip+端口
避坑:
运行容器出现一下错误,需要打开防火墙
结语:
基于docker部署java项目整套环境,docker部署主要的好处在于跨平台型,这个项目,我们公司部署在OpenEuler欧拉系统上;希望对大家有所帮助,需要资料的或者有什么疑惑的可以下方留言,或者私信我,我看到后的第一时间回复大家 希望大家能点点赞,多多关注在这里先谢谢大家了~~
更多推荐
已为社区贡献1条内容
所有评论(0)