• docker部署项目


    之前部署都是在centos安装jdk、mysql、redis、nginx、rabbitmq、nacos...

    现在用docker来实现部署 , docker hub地址:https://hub.docker.com/

    云服务器部署在安全组中要开放指定的端口,防火墙也要开放对应的端口,重要的事情说三遍、重要的事情说三遍、重要的事情说三遍...

    一、安装docker

    之前自己写过安装步骤:https://blog.csdn.net/lanren312/article/details/126983499

    二、安装jdk

    之前自己写过安装步骤:https://blog.csdn.net/lanren312/article/details/125790035

    三、安装mysql

    参考博客: https://blog.csdn.net/weixin_43830765/article/details/123849821

     1、在docker hub中的tag找到自己要pull的版本

    docker pull mysql:5.7

     

     

     2、创建实例

    1. sudo docker run -d -p 3306:3306 -v /usr/local/mysql/conf:/etc/mysql/conf.d -v /usr/local/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7
    2. ## 分行写
    3. sudo docker run -d -p 3306:3306 \
    4. -v /usr/local/mysql/conf:/etc/mysql/conf.d \
    5. -v /usr/local/mysql/data:/var/lib/mysql \
    6. -e MYSQL_ROOT_PASSWORD=123456 \
    7. --name mysql mysql:5.7
    8. -p 3306:3306 --name mysql mysql:5.7
    9. 将宿主机3306端口映射到容器的3306端口
    10. --name mysql ## 容器名字
    11. mysql:5.7 ## 镜像名称,如何输入错误可能会导致在次拉取镜像
    12. # 数据挂载
    13. 1.-v /usr/local/mysql/log:/var/log/mysql (日志文件挂载)
    14. 将容器中的日志文件夹(/var/log/mysql)挂载到宿主机的(/usr/local/mysql/log)文件夹中
    15. 2.-v /usr/local/mysql/data:/var/lib/mysql (数据文件挂载)
    16. 将容器中的日志文件夹(/var/lib/mysql)挂载到宿主机的(/usr/local/mysql/data)文件夹中
    17. 3.-v /usr/local/mysql/conf:/etc/mysql/conf.d (配置文件挂载)
    18. 将容器中的日志文件夹(/etc/mysql/conf.d)挂载到宿主机的(/usr/local/mysql/conf)文件夹中

     3、进入容器同步数据

    1. 1、将之前备份的数据拷贝到容器中,/home/tmp是容器内的目录,需要先创建
    2. docker cp /lanren312//mysqlbackup_20221029.sql f438131d117e:/home/tmp
    3. 2、通过容器 别名/id 进入容器
    4. docker exec -it f43813 /bin/bash
    5. 3、同步数据
    6. mysql -u root -p
    7. source /home/tmp/mysqlbackup_20221029.sql

    4、后面发现服务器重启后mysql容器没有自启动

     docker update mysql --restart=always

    四、安装nginx

    参考博客:https://blog.csdn.net/weixin_46244732/article/details/114315708

    1、找到要pull的版本

    docker pull nginx:1.23.1

     2、启动容器,将容器中的文件拷贝到宿主机

    docker run -d -it --name=nginx -p 80:80 nginx:1.23.1

    2.1、 将容器中的文件拷贝到宿主机

    1. docker cp d25f2217adc8:/etc/nginx/nginx.conf /lanren312/docker-workspace/nginx/
    2. docker cp d25f2217adc8:/etc/nginx/conf.d /lanren312/docker-workspace/nginx/conf/
    3. docker cp nginx:/usr/share/nginx/html/ /lanren312/docker-workspace/nginx/html/
    4. docker cp nginx:/var/log/nginx/ /lanren312/docker-workspace/nginx/logs/
    5. d25f2217adc8 容器id
    6. nginx 容器name
    7. 两个都是一样用

     装好后在浏览器输入 服务器ip,就可以看到nginx页面了

    2.2、将容器中配置挂载到宿主机

     先删除刚刚创建的容器

    1. 停止容器:docker stop ningx
    2. 移除容器:docker rm ningx
    3. 或者 docker rm -f d25f2217adc8 ## id 也是一样的,不需要写全,前4位数就差不多了

    再次启动容器,这个时候和第一次有点不一样,现在要挂载配置 

    1. docker run -d -it --name nginx -p 80:80 \
    2. -v /lanren312/docker-workspace/nginx/nginx.conf:/etc/nginx/nginx.conf \
    3. -v /lanren312/docker-workspace/nginx/logs:/var/log/nginx \
    4. -v /lanren312/docker-workspace/nginx/html:/usr/share/nginx/html \
    5. -v /lanren312/docker-workspace/nginx/conf:/etc/nginx/conf.d \
    6. nginx:1.23.1

    挂载好后,以后nginx配置文件有修改直接在宿主机修改,重启容器即可。就不用进到容器中修改,更加方便。

    3、检验nginx是否安装成功

    修改index.html

     

     浏览器输入 服务器ip

    4、增加配置

    -v /lanren312/docker-workspace/nginx/html:/usr/share/nginx/html 

    这句话是将容器中的 /usr/share/nginx/html 目录挂载到宿主机 /lanren312/docker-workspace/nginx/html

    新增一个conf文件,静态文件的地址为 usr/share/nginx/html

    静态文件放在 /lanren312/docker-workspace/nginx/html 目录下即可

     

     

     

    五、安装redis

    1、在docker hub中的tag找到自己要pull的版本

    docker pull redis:5.0.7

     2、下载redis.conf文件

    1. wget http://download.redis.io/releases/redis-5.0.7.tar.gz
    2. tar -zxvf redis-5.0.7.tar.gz
    3. cd redis-5.0.7
    4. cp redis.conf /lanren312/docker-workspace/redis/
    5. cd /lanren312/docker-workspace/redis/
    6. chmod 777 redis.conf ## 授权
    7. mkdir data

     3、修改配置信息

    1. 1、注释 bind 127.0.0.1 ## 允许外部连接
    2. 2、protected-mode no ## 关闭保护模式
    3. 3、daemonize yes ## 允许后台运行 ps:这里先卖个关子,请留意
    4. 4、requirepass xxxxx ## 密码写自己的

    4、启动 

    1. docker run --restart=always -d -it --name redis -p 6379:6379 \
    2. -v /lanren312/docker-workspace/redis/redis.conf:/etc/redis/redis.conf \
    3. -v /lanren312/docker-workspace/redis/data:/data \
    4. redis:5.0.3 \
    5. redis-server /etc/redis/redis.conf --appendonly yes

    5、检验是否成功 

    划重点,不出意外,意外就来了,启动发现没有成功,重启防火墙引发新的bug

     6、解决办法

    redis.conf文件中的daemonize改为yes(允许后台运行),与docker中的-d参数冲突了,daemonize改为no,再次执行启动容器启动成功

    使用redis连接工具连接成功

    进入到容器内部,redis.conf文件和宿主机的一样

    7、 后面发现服务器重启后redis容器没有自启动

    docker update redis --restart=always

    小结 

    写到这里,常规的部署就已经没问题了,本机装的jdk,配合docker安装的mysql、nginx、redis,部署springboot项目是没有问题的。

    但是现在用Dockerfile来部署,需要新建一个Dockerfile文件,一个start脚本

    1、pull一个jdk镜像: docker pull openjdk:8-jdk-alpine

    2、创建Dockerfile文件

    1. FROM openjdk:8-jdk-alpine
    2. VOLUME /tmp
    3. ADD monkey.jar docker-monkey.jar
    4. ENTRYPOINT ["java","-Xms500m","-Xmx500m","-XX:MetaspaceSize=256m","-XX:MaxMetaspaceSize=500m","-Dlog4j2.formatMsgNoLookups = true", "-jar","/docker-monkey.jar"]

     3、创建start脚本,授权 chomd 777 start.sh

    1. cd /opt ## jar包所在路径..
    2. docker build -t monkey .
    3. docker stop monkey | true
    4. docker rm monkey | true
    5. docker run -v /lanren312/docker-workspace/nginx/html/:/lanren312/docker-workspace/nginx/html/ -it -m 512M -p 9001:9001 \
    6. --restart always -d --name=monkey monkey:latest
    7. ## -v /lanren312/docker-workspace/nginx/html/:/lanren312/docker-workspace/nginx/html/
    8. ## 前期nginx是将 容器的目录(/usr/share/nginx/html/)挂载到了宿主机--/lanren312/docker-workspace/nginx/html/

    4、启动 ./start.sh

    用docker部署,redis 的host就不要再写127.0.0.1, 要写服务器ip,否则会报错的。

    六、安装rabbitmq

    docker run -d --name rabbitmq -e RABBITMQ_DEFAULT_USER=账号 -e RABBITMQ_DEFAULT_PASS=密码 -p 15672:15672 -p 5672:5672 rabbitmq:3.8.4-management

    如果不写账号密码,默认的应该是guest,这个不安全,建议写一个自己的账号密码

    执行完后,打开浏览器访问服务器公网ip:15672

    输入创建的账号、密码,登录成功代表docker安装成功

    1、操作指令

    1. ## 查看所有用户
    2. rabbitmqctl list_users
    3. ## 修改密码
    4. rabbitmqctl change_password 用户名 新密码
    5. ## 删除用户
    6. rabbitmqctl delete_user 用户名

     

     

    七、安装nacos

     之前自己写过安装步骤:https://blog.csdn.net/lanren312/article/details/127224212

  • 相关阅读:
    3.2、封装成帧
    CentOS7下Redis7安装
    【Shell脚本入门】
    oracle 递归
    什么是redis,redis能做什么,redis的应用场景
    猿创征文 | 一个大四学长分享自己的web前端学习路线--vue篇(1/3)
    03、Spring中的静态代理&JDK动态代理&CGLB动态代理
    关于三维布尔运算的几点思考
    GBase8s系统表介绍(七)
    如何开始着手一篇Meta分析 | Meta分析的流程及方法
  • 原文地址:https://blog.csdn.net/lanren312/article/details/127643827