Docker容器化部署SpringBoot
Docker(windows环境)容器化部署SpringBoot
一,前言
产品需要,项目需要部署到各个项目地的服务器上,鉴于之前一直是tomcat部署,现在改换为(Windows环境下)docker容器化部署。docker-compose编排redis+nginx+mysql+tomcat !
二,环境准备
1.Windows10且os版本必须大于18362
2.开启hyper-v(步骤如下)
- 打开控制面板找到程序和功能,并点击启用和关闭wineows功能
- 勾选hyper-v并点击确认,等待进度条完成,会提示是否重启电脑,选择重启电脑即可。
- win10电脑没有hyper-v的情况下(有的话 直接忽略此步骤!!)
将下面命令复制到文本文档中,并将文档重命名Hyper.cmd
pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt
for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL
用管理员身份运行该文档,如下图:
等待脚本执行,最后需要输入Y来进行电脑重启。重启完即可
三,安装docker for windows
- 下载和安装
官网链接
安装这里没什么好描述的,一直按确定就好了。
验证
进入cmd窗口查看docker是否安装成功。(dicker --version)
- docker配置
这里主要是配置下docker的下载源,让你飞速下载你想要的镜像
按上面的步骤依次点击,到步骤3的时候将下面的代码全部粘贴上去就行,再进行第四步确认。
{
"experimental": false,
"debug": true,
"registry-mirrors": [
"https://xxxxxx.mirror.aliyuncs.com",
"http://hub-mirror.c.163.com"
]
}
到这里你的windows版的docker安装配置的差不多了,只要你的docker for windows开启且正在运行,那么你就可以直接在cmd里面进行镜像的拉取,启动等等一些同于linux里面的操作。且命令行和linux里面一样
四,docker-compose的编排
这是我写的一个docker-compose.yml
version: "3"
services:
nginx: # 服务名称,用户自定义
restart: always
image: nginx:latest # 镜像版本
container_name: DockerNginx
environment:
# 设置环境变量 时区上海
- TZ=Asia/Shanghai
ports:
- 80:80 # 暴露端口
volumes: # 挂载
- ./root/nginx/html:/usr/share/nginx/html
- ./root/nginx/nginx.conf:/etc/nginx/nginx.conf
- ./root/nginx/logs:/var/log/nginx
- ./root/nginx/logs:/etc/nginx/logs
privileged: true # 这个必须要,解决nginx的文件调用的权限问题
mysql:
restart: always
image: mysql:5.7.27
container_name: DockerMysql
ports:
- 3306:3306
environment: # 指定用户root的密码
- TZ=Asia/Shanghai
- MYSQL_DATABASE=root
- MYSQL_ROOT_PASSWORD=admin
- MYSQL_ROOT_HOST= '%'
volumes:
- ./root/mysql/db:/var/lib/mysql
- ./root/mysql/conf/my.cnf:/etc/mysql/my.cnf
- ./root/mysql/log:/var/log/mysql/
redis:
restart: always
image: redis:6.0.12
container_name: DockerRedis
ports:
- 6379:6379
environment:
# 设置环境变量 时区上海 编码UTF-8
- TZ=Asia/Shanghai
- LANG=en_US.UTF-8
volumes:
- ./root/redis:/data #挂载/docker-compose/redis/data至容器
- ./root/redis/conf/redis.conf:/etc/redis/redis.conf #挂载conf至容器
command: redis-server /etc/redis/redis.conf
vueblog:
image: tomcat:8.5.37
container_name: DockerTomcat
ports:
- "8080:8080"
restart: always
environment:
- TZ=Asia/Shanghai
- JAVA_OPTS=-Xmx256m -Xms256m
entrypoint:
- "catalina.sh"
- "run"
volumes:
- ./tomcat-web/webapps/express_sorting.war:/usr/local/tomcat/webapps/sorting_web.war
- ./tomcat-web/logs:/usr/local/tomcat/logs
- ./tomcat-web/webapps/ROOT/melon_upload/sorting:/usr/local/tomcat/webapps/melon_upload/sorting
- ./tomcat-web/webapps/ROOT/melon_upload/logs:/usr/local/tomcat/webapps/melon_upload/logs
depends_on: # 依赖与mysql、redis,其实可以不填,默认已经表示可以
- mysql
- redis
关键字详解
- restart: always: docker重启,容器自动重启
- image: nginx:latest: nginx:镜像名称 latest:镜像版本(这个代表最新版)
- container_name: 定义容器的名称
- environment: 设置环境变量 时区
- ports: 暴露端口
- volumes: 将你本地文件夹和容器里的文件挂载。
- depends_on: 依赖与其它容器 如下:
这里是你的springboot项目的配置文件,里面的mysql和redis的ip直接更替为你的镜像就行。
关于nginx
1.将你的前端打包后的项目放到如下:
2.修改过配置的nginx.conf文件放到F:\root\nginx下
3.至于其他需要用到挂载的文件夹,自己去新建
关于mysql
- 将修改好的my.cnf复制到F:\root\mysql\conf下
- 其它需要用到挂载的文件夹,自己去新建
关于redis
- 将修改好的redis.conf复制到F:\root\conf\redis下
- 其它需要用到挂载的文件夹,自己去新建
关于tomcat
- 将修改好的项目war包复制到你自己指定的文件夹下
- 其它需要用到挂载的文件夹,自己去新建
我的文件结构如下:
**注意:**你的docker-compose.yml在哪个盘,你就在cmd里切换到那个盘下。然后开始你的命令之旅
命令和展示
上面的步骤完成后
你可以在cmd里输入 docker-compose up -d 命令
然后再没有报错的情况下等待你的那些镜像下载完成且启动
之后你就可以在本机开始访问你的程序了
docker for window界面展示
然后这个软件里还有给docker分配空间及内存的,可以自己去网上看看研究下。
记录记录记录,你们可以参考下,有问题得自己去摸索。
2021/4/12