Windows环境下Docker容器化部署SpringBoot(docker-compose+redis+nginx+mysql+tomcat)

Docker容器化部署SpringBoot

Docker(windows环境)容器化部署SpringBoot

一,前言

产品需要,项目需要部署到各个项目地的服务器上,鉴于之前一直是tomcat部署,现在改换为(Windows环境下)docker容器化部署。docker-compose编排redis+nginx+mysql+tomcat !

二,环境准备

 1.Windows10且os版本必须大于18362
 2.开启hyper-v(步骤如下)
  1. 打开控制面板找到程序和功能,并点击启用和关闭wineows功能
    Windows环境下Docker容器化部署SpringBoot(docker-compose+redis+nginx+mysql+tomcat)_第1张图片
  2. 勾选hyper-v并点击确认,等待进度条完成,会提示是否重启电脑,选择重启电脑即可。

Windows环境下Docker容器化部署SpringBoot(docker-compose+redis+nginx+mysql+tomcat)_第2张图片

  1. 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

用管理员身份运行该文档,如下图:
Windows环境下Docker容器化部署SpringBoot(docker-compose+redis+nginx+mysql+tomcat)_第3张图片
等待脚本执行,最后需要输入Y来进行电脑重启。重启完即可

三,安装docker for windows

  1. 下载和安装
    官网链接
    Windows环境下Docker容器化部署SpringBoot(docker-compose+redis+nginx+mysql+tomcat)_第4张图片
    安装这里没什么好描述的,一直按确定就好了。

验证
进入cmd窗口查看docker是否安装成功。(dicker --version)
Windows环境下Docker容器化部署SpringBoot(docker-compose+redis+nginx+mysql+tomcat)_第5张图片

  1. docker配置
    这里主要是配置下docker的下载源,让你飞速下载你想要的镜像
    Windows环境下Docker容器化部署SpringBoot(docker-compose+redis+nginx+mysql+tomcat)_第6张图片
    按上面的步骤依次点击,到步骤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直接更替为你的镜像就行。
Windows环境下Docker容器化部署SpringBoot(docker-compose+redis+nginx+mysql+tomcat)_第7张图片
关于nginx

Windows环境下Docker容器化部署SpringBoot(docker-compose+redis+nginx+mysql+tomcat)_第8张图片

1.将你的前端打包后的项目放到如下:Windows环境下Docker容器化部署SpringBoot(docker-compose+redis+nginx+mysql+tomcat)_第9张图片
2.修改过配置的nginx.conf文件放到F:\root\nginx下

Windows环境下Docker容器化部署SpringBoot(docker-compose+redis+nginx+mysql+tomcat)_第10张图片
3.至于其他需要用到挂载的文件夹,自己去新建

关于mysql

  1. 将修改好的my.cnf复制到F:\root\mysql\conf下
  2. 其它需要用到挂载的文件夹,自己去新建

关于redis

  1. 将修改好的redis.conf复制到F:\root\conf\redis下
  2. 其它需要用到挂载的文件夹,自己去新建

关于tomcat

  1. 将修改好的项目war包复制到你自己指定的文件夹下
  2. 其它需要用到挂载的文件夹,自己去新建

我的文件结构如下:
Windows环境下Docker容器化部署SpringBoot(docker-compose+redis+nginx+mysql+tomcat)_第11张图片

**注意:**你的docker-compose.yml在哪个盘,你就在cmd里切换到那个盘下。然后开始你的命令之旅

命令和展示

上面的步骤完成后
你可以在cmd里输入 docker-compose up -d 命令

然后再没有报错的情况下等待你的那些镜像下载完成且启动
之后你就可以在本机开始访问你的程序了

docker for window界面展示

Windows环境下Docker容器化部署SpringBoot(docker-compose+redis+nginx+mysql+tomcat)_第12张图片

然后这个软件里还有给docker分配空间及内存的,可以自己去网上看看研究下。

记录记录记录,你们可以参考下,有问题得自己去摸索。
2021/4/12

你可能感兴趣的:(docker,docker,java,linux)