之前部署都是在centos安装jdk、mysql、redis、nginx、rabbitmq、nacos...
现在用docker来实现部署 , docker hub地址:https://hub.docker.com/
云服务器部署在安全组中要开放指定的端口,防火墙也要开放对应的端口,重要的事情说三遍、重要的事情说三遍、重要的事情说三遍...
之前自己写过安装步骤:https://blog.csdn.net/lanren312/article/details/126983499
之前自己写过安装步骤:https://blog.csdn.net/lanren312/article/details/125790035
参考博客: https://blog.csdn.net/weixin_43830765/article/details/123849821
docker pull mysql:5.7
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
-p 3306:3306 --name mysql mysql:5.7
将宿主机3306端口映射到容器的3306端口
--name mysql ## 容器名字
mysql:5.7 ## 镜像名称,如何输入错误可能会导致在次拉取镜像
# 数据挂载
1.-v /usr/local/mysql/log:/var/log/mysql (日志文件挂载)
将容器中的日志文件夹(/var/log/mysql)挂载到宿主机的(/usr/local/mysql/log)文件夹中
2.-v /usr/local/mysql/data:/var/lib/mysql (数据文件挂载)
将容器中的日志文件夹(/var/lib/mysql)挂载到宿主机的(/usr/local/mysql/data)文件夹中
3.-v /usr/local/mysql/conf:/etc/mysql/conf.d (配置文件挂载)
将容器中的日志文件夹(/etc/mysql/conf.d)挂载到宿主机的(/usr/local/mysql/conf)文件夹中
1、将之前备份的数据拷贝到容器中,/home/tmp是容器内的目录,需要先创建
docker cp /lanren312//mysqlbackup_20221029.sql f438131d117e:/home/tmp
2、通过容器 别名/id 进入容器
docker exec -it f43813 /bin/bash
3、同步数据
mysql -u root -p
source /home/tmp/mysqlbackup_20221029.sql
参考博客:https://blog.csdn.net/weixin_46244732/article/details/114315708
docker pull nginx:1.23.1
docker run -d -it --name=nginx -p 80:80 nginx:1.23.1
docker cp d25f2217adc8:/etc/nginx/nginx.conf /lanren312/docker-workspace/nginx/
docker cp d25f2217adc8:/etc/nginx/conf.d /lanren312/docker-workspace/nginx/conf/
docker cp nginx:/usr/share/nginx/html/ /lanren312/docker-workspace/nginx/html/
docker cp nginx:/var/log/nginx/ /lanren312/docker-workspace/nginx/logs/
d25f2217adc8 容器id
nginx 容器name
两个都是一样用
装好后在浏览器输入 服务器ip,就可以看到nginx页面了
先删除刚刚创建的容器
停止容器:docker stop ningx
移除容器:docker rm ningx
或者 docker rm -f d25f2217adc8 ## id 也是一样的,不需要写全,前4位数就差不多了
再次启动容器,这个时候和第一次有点不一样,现在要挂载配置
docker run -d -it --name nginx -p 80:80 \
-v /lanren312/docker-workspace/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /lanren312/docker-workspace/nginx/logs:/var/log/nginx \
-v /lanren312/docker-workspace/nginx/html:/usr/share/nginx/html \
-v /lanren312/docker-workspace/nginx/conf:/etc/nginx/conf.d \
nginx:1.23.1
挂载好后,以后nginx配置文件有修改直接在宿主机修改,重启容器即可。就不用进到容器中修改,更加方便。
修改index.html
浏览器输入 服务器ip
-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 目录下即可
docker pull redis:5.0.7
wget http://download.redis.io/releases/redis-5.0.7.tar.gz
tar -zxvf redis-5.0.7.tar.gz
cd redis-5.0.7
cp redis.conf /lanren312/docker-workspace/redis/
cd /lanren312/docker-workspace/redis/
chmod 777 redis.conf ## 授权
mkdir data
1、注释 bind 127.0.0.1 ## 允许外部连接
2、protected-mode no ## 关闭保护模式
3、daemonize yes ## 允许后台运行 ps:这里先卖个关子,请留意
4、requirepass xxxxx ## 密码写自己的
docker run --restart=always -d -it --name redis -p 6379:6379 \
-v /lanren312/docker-workspace/redis/redis.conf:/etc/redis/redis.conf \
-v /lanren312/docker-workspace/redis/data:/data \
redis:5.0.3 \
redis-server /etc/redis/redis.conf --appendonly yes
划重点,不出意外,意外就来了,启动发现没有成功,重启防火墙引发新的bug
redis.conf文件中的daemonize改为yes(允许后台运行),与docker中的-d参数冲突了,daemonize改为no,再次执行启动容器启动成功
使用redis连接工具连接成功
进入到容器内部,redis.conf文件和宿主机的一样
写到这里,常规的部署就已经没问题了,现在用Dockerfile来部署
新建一个Dockerfile文件,一个start脚本
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD monkey.jar docker-monkey.jar
ENTRYPOINT ["java","-Xms500m","-Xmx500m","-XX:MetaspaceSize=256m","-XX:MaxMetaspaceSize=500m","-Dlog4j2.formatMsgNoLookups = true", "-jar","/docker-monkey.jar"]
cd /opt ## jar包所在路径..
docker build -t monkey .
docker stop monkey | true
docker rm monkey | true
docker run -v /lanren312/docker-workspace/nginx/html/:/lanren312/docker-workspace/nginx/html/ -it -m 512M -p 9001:9001 \
--restart always -d --name=monkey monkey:latest
## -v /lanren312/docker-workspace/nginx/html/:/lanren312/docker-workspace/nginx/html/
## 前期nginx是将 容器的目录(/usr/share/nginx/html/)挂载到了宿主机--/lanren312/docker-workspace/nginx/html/
用docker部署,redis 的host就不要再写127.0.0.1, 要写服务器ip,否则会报错的。