Docker 搭建 SpringBoot + Nginx + Mysql 环境

113 阅读3分钟

1. 安装mysql

  • 寻找mysql镜像:在Docker镜像网站搜寻镜像

    image.png

    点击上图的mysql,就可以进入以下的详情页面

    image.png

    使用上图的命令,就可以拉取一个mysql镜像。此外,可以在详情页面找到如何来使用mysql镜像的相关介绍

    image.png

  • 拉取mysql镜像 | 命令 | 描述 | | --- | --- | | docker pull mysql | 下载最新版Mysql镜像 (此命令就等同于 : docker pull mysql:latest ) | | docker pull mysql:xxx | 下载指定版本的Mysql镜像 (xxx指具体版本号,如5.7) |

  • 创建mysql容器并运行

    docker run \
    --name mysql5.7 \
    -d \
    -p 3306:3306 \
    --restart unless-stopped \
    -v /root/data/mysql/log:/var/log/mysql \
    -v /root/data/mysql/data:/var/lib/mysql \
    -v /root/data/mysql/conf:/etc/mysql/conf.d \
    -e MYSQL_ROOT_PASSWORD=zxcvbnm \
    mysql:5.7
    
    命令描述
    docker run创建一个新的容器 , 同时运行这个容器
    --name mysql5.7启动容器的名字
    -d后台运行
    -p 3306:3306将容器的 3306 (后面那个) 端口映射到主机的 3306 (前面那个) 端口
    --restart unless-stopped容器重启策略
    -v /root/data/mysql/log:/var/log/mysql将日志文件夹挂载到主机
    -v /root/data/mysql/data:/var/lib/mysql将mysql储存文件夹挂载到主机
    -v /root/data/mysql/conf:/etc/mysql/conf.d将配置文件夹挂载到主机
    -e MYSQL_ROOT_PASSWORD=root设置 root 用户的密码
    mysql:5.7启动哪个版本的 mysql (本地镜像的版本)

    tips:命令中所有'冒号'前面的是主机配置, '冒号'后面的是mysql容器配置。

  • 查看mysql是否运行

    命令:docker ps

    image.png

  • 进入mysql容器:docker exec -it xxx /bin/bash

  • 查看mysql日志:docker logs xxx

2. 安装nginx

  • 寻找nginx镜像:在Docker镜像网站搜寻镜像

  • 拉取nginx镜像:docker pull nginx:1.22.1

  • 创建nginx配置文件

    # 创建挂载目录
    mkdir -p /root/data/nginx/{conf,log,html}
    
    # 生成容器
    docker run --name nginx-1.22.1 -p 80:80 -d nginx:1.22.1
    # 将容器nginx.conf文件复制到宿主机
    docker cp nginx-1.22.1:/etc/nginx/nginx.conf /root/data/nginx/conf/nginx.conf
    # 将容器conf.d文件夹下内容复制到宿主机
    docker cp nginx-1.22.1:/etc/nginx/conf.d /root/data/nginx/conf/conf.d
    # 将容器中的html文件夹复制到宿主机
    docker cp nginx-1.22.1:/usr/share/nginx/html /root/data/nginx/
    
  • 创建nginx容器并运行

    # 删除正在运行的nginx容器
    docker rm -f xxx
    # 运行以下命令
    docker run \
    -p 80:80 \
    --name nginx-1.22.1 \
    -v /root/data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
    -v /root/data/nginx/conf/conf.d:/etc/nginx/conf.d \
    -v /root/data/nginx/log:/var/log/nginx \
    -v /root/data/nginx/html:/usr/share/nginx/html \
    -d nginx:1.22.1
    

    (vue项目部署)需把vue打包好的目录下的文件全部移动到/root/data/nginx/html下。

  • 查看nginx是否运行

    命令:docker ps

    image.png

  • 页面访问

    image.png

3. 构建springboot

  • 创建jar包目录并放入jar包

    mkdir /root/data/jar
    cp /root/back_template-0.0.1-SNAPSHOT.jar /root/data/jar
    
  • 编写Dockerfile

    # 基于openjdk 镜像  
    FROM openjdk:17  
    # 将本地文件夹挂在到当前容器  
    VOLUME /root/data/jar  
    # 复制文件到容器  
    ADD back_template-0.0.1-SNAPSHOT.jar test.jar  
    # 声明需要暴露的端口  
    EXPOSE 10000  
    # 配置容器启动后执行的命令  
    ENTRYPOINT ["sh", "-c", "java $PARAMS -Djava.security.egd=file:/dev/urandom -jar /test.jar"]
    
  • 构建镜像

    # -t 指定生成的镜像的tag,/root/data/jar指定docker的文件所在的目录 
    docker build -t test/back_template:v1 /root/data/jar
    
  • 查看构建的镜像

    image.png

  • 运行容器:docker run -it -d -p 10000:10000 test/back_template:v1

  • 查看容器是否运行

    命令:docker ps

    image.png