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、创建实例

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

## 分行写
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)文件夹中

 3、进入容器同步数据

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

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、 将容器中的文件拷贝到宿主机

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页面了

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

 先删除刚刚创建的容器

停止容器: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配置文件有修改直接在宿主机修改,重启容器即可。就不用进到容器中修改,更加方便。

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文件

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

 3、修改配置信息

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

4、启动 

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

5、检验是否成功 

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

 6、解决办法

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

使用redis连接工具连接成功

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

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

docker update redis --restart=always

8、连接redis

docker exec -it xxx redis-cli    # 直接进到docker里面的redis

# 删除 aaa开头的key
docker exec -it xxx /bin/bash
redis-cli -a 'password' KEYS "aaa*" | xargs redis-cli -a 'password' del

小结 

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

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

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

2、创建Dockerfile文件

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"]

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

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/

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、操作指令

## 查看所有用户
rabbitmqctl list_users

## 修改密码
rabbitmqctl change_password 用户名 新密码

## 删除用户
rabbitmqctl delete_user 用户名

 

 

七、安装nacos

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

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker项目部署是指使用Docker技术来部署和管理应用程序的过程。Docker是一种开源的容器化平台,可以将应用程序及其依赖项打包成一个容器,并在任何支持Docker的环境中运行。通过使用Docker,可以实现应用程序的快速部署、可移植性和可扩展性。 要开始使用Docker进行项目部署,首先需要安装Docker Engine和containerd。可以使用以下命令安装最新版本的Docker Engine和containerd:yum install docker-ce docker-ce-cli containerd.io 安装完成后,可以使用Docker命令行工具来管理和操作Docker容器。可以使用以下命令来启动和停止容器、查看容器信息等操作。 要卸载Docker引擎、CLI和Containerd包,可以使用以下命令:yum remove docker-ce docker-ce-cli containerd.io 通过Docker部署项目,可以实现应用程序的隔离性、可复制性和高效性。使用Docker可以将应用程序及其依赖项打包成一个容器,使得应用程序在不同环境中都能够一致地运行。同时,Docker还提供了丰富的工具和功能,可以方便地管理和部署多个容器,实现应用程序的快速部署和扩展。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [docker项目部署](https://blog.csdn.net/m0_49556309/article/details/117093002)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [docker部署项目](https://blog.csdn.net/weixin_45607293/article/details/122707731)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值