Docker部署项目

本文介绍了在黑马程序员平台学习Docker后,如何通过部署MySQL、Redis、项目镜像和Nginx等构建应用,以及在实践中遇到的网络配置、IP访问问题和路径头配置等踩坑经验。
摘要由CSDN通过智能技术生成

一、学习经历

学习地址(黑马程序员):01.Docker课程介绍_哔哩哔哩_bilibili

对应文档位置:Docs 

先通过上面的视频对docker有一定的了解后,下面的讲解也会容易理解。

二、部署项目过程

注:以下通过ruoyi-plus进行部署

  1. 搭建基本的容器
  1. 创建自定义网络

docker network create pxh

  1. 创建数据库镜像和容器
docker run -d \

  --name mysql \

  -p 3307:3306 \

  -e TZ=Asia/Shanghai \

  -e MYSQL_ROOT_PASSWORD=sx123456 \

  -v /docker/mysql/data:/var/lib/mysql \

  -v /docker/mysql/conf:/etc/mysql/conf.d \

  -v /docker/mysql/init:/docker-entrypoint-initdb.d \

  --network pxh\

  mysql:5.7.36

创建时要注意数据库的root密码,后期可以直接使用。

映射地址要提前建立,否则程序会报错。

如果外网连接不到:

  1. 防火墙没开
  2. 没有使用映射的端口,上面访问数据应该用3307
  3. 账号root没有给权限访问,这可以百度一下有相应的解决办法
  4. 其他
  1. 创建redis镜像和容器
docker run \

--restart=always \

--log-opt max-size=100m \

--log-opt max-file=5 \

-p 16379:6379 \

--name redis \

-v /docker/redis/conf/redis.conf:/etc/redis/redis.conf  \

-v /docker/redis/data:/data \

-d redis redis-server /etc/redis/redis.conf \

--appendonly yes

Redis创建时可以设置一个密码,具体配置可以看官方文档。

Redis在连接过程中注意防火墙要开着。

  1. 创建项目镜像和容器

这里就是具体的项目搭建了,注意每一个模块(jar)都要单独搭建,不然启动的时候他不会全部启动(亲测认证)。

  • 创建脚本
# 基础镜像

FROM openjdk:17

# 设定时区

ENV TZ=Asia/Shanghai

RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

# 拷贝jar包

COPY  你的jar包名称 /app.jar

# 入口

ENTRYPOINT ["java", "-jar", "/app.jar"]

这里要注意的是jdk的版本要对呀你项目的版本。

  • 把打包好的jar包和上面的脚本放到同一个文件夹里面
  • 打包好后如下

        

  1. 创建项目镜像和容器
  • 将创建好的demo放到服务指定位置(这个位置你自己管理)

   

    

  • 进入某个文件 cd /root/demo-system
  • 执行下面两天代码:
docker build -t jarsxweb-system .

docker run -d --name jarsxweb-system --network sxweb  jarsxweb-system
  • 如果有启动顺序,请安装启动的顺序执行
  1. 创建nginx镜像和容器
docker run -d \

  --name nginx \

  -p 806:806 \

  -v /docker/nginx/html:/usr/share/nginx/html \

  -v /docker/nginx/nginx.conf:/etc/nginx/nginx.conf \

  -v /docker/nginx/cert:/etc/nginx/cert \

  --network pxh \

  nginx:1.24.0

这里需要注意的是你映射的端口一定是你需要部署项目的端口,可以映射多个端口。

防火墙记得开,不然页面访问不到。

  1. 配置nginx

全部启动后

就是这个样子,非常的舒心!

Nginx的配置主要就是地址转发一定要用容器名,localhost和127.0.0.1都无法访问,因为自定义的网桥里面没有分配这个ip。

具体配置,见附件1

  1. 结束

配置好后重新启动一下nginx就可以正常访问了。

三、踩坑过程

1、先来个总结:

  1. 自定义的网桥 没有localhost和127.0.0.1 ,因此在我们项目搭建工程中如遇到项目直接的访问,只能用容器名去访问,如果通过 localhost和127.0.0.1 就会访问不到!
  2. 还是上面那个

2、坑1

启动jarsxweb-gateway 的时候报了一个错,当时我想的nacos连接不上,然后百度了很久,总的说是 还有两个端口没开  然后我把另外两个端口映射出去,并且开了防火墙,但是没有,还是这个问题。

我又去问是不是因为网桥内还有端口限制。但是给的答案是没有端口限制,也就是说同一个网桥内的所有容器都是互通的,没有防火墙之类的端口拦截。

最后反复去看配置文件,偶然发现,原来是gateway 在访问nacos的时候竟然用的是ip访问

修改好后就可以正常启动了。

3、坑2

后端全部起来后,前端依旧无法访问,一直报错:没有token。经过再三确认前后的都没有问题下。我把目光放到了nginx!

在nginx中通常我们配置地址转发的时候,都会如上黑色背景图配置。我猛然发现,这个localhost是如此的显眼!在把localhosat改成容器名后也能够正常访问了,

但是随之而来又出现了一个问题,登录的时候报错:没有访问权限

我找呀找,看呀看,问呀问。最后还是把目光放在nginx上,原来是在地址转发的时候,没有配置请求的路径头

以往我们配置文件都不会配置这个路径头,因为在转发的时候他会把原来的请求路径头给干掉,然后我们配置的路径,因此,之前配置的时候没有加上这个system,在网关转发的时候找不到路径。

4、坑3

Redis连接不上!Nacos里面全局配置,记得改过来

  • 20
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值