欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 游戏 > 使用docker部署苍穹外卖到云服务器中(包括如何部署微信小程序、后端代码、nginx等;超详细,手把手教,文末附资源)

使用docker部署苍穹外卖到云服务器中(包括如何部署微信小程序、后端代码、nginx等;超详细,手把手教,文末附资源)

2025/4/16 13:45:32 来源:https://blog.csdn.net/2301_78944773/article/details/142715077  浏览:    关键词:使用docker部署苍穹外卖到云服务器中(包括如何部署微信小程序、后端代码、nginx等;超详细,手把手教,文末附资源)

使用docker部署苍穹外卖到云服务器中

      • 一、docker自定义网络
            • 1. 原因:
            • 2. 原理作用
            • 3. docker创建网络
            • 4. 举例说明(举个例子,不用操作)
      • 二、部署MySQL
            • 1. 创建本地目录
            • 2. 使用xftp、MobaXerm等应用程序将mysql这个文件夹复制到服务器的/root目录下
            • 3. 创建MySQL容器,完成本地目录挂载
            • 4. docker展示部署结果
            • 5. 使用navicat连接服务器上部署的MySQL
      • 三、部署redis
            • 1. 创建并运行redis容器
            • 2. docker展示部署结果
            • 3. redis可视化工具连接服务器上的redis容器
      • 四、部署java后端
            • 1. 创建jdk镜像
            • 2. 修改后端项目的配置信息
            • 3. 将苍穹外卖后端项目打包(.jar包)
            • 4. 编写DockerFile文件
            • 5. 创建苍穹外卖后端项目的镜像
            • 6. 创建苍穹外卖后端项目容器
            • 7. docker查看苍穹外卖后端项目容器
            • 8. 浏览器浏览器访问后端项目。
      • 五、部署nignx前端项目(文末提供了nginx相关的资源)
            • 1. 修改nginx.conf文件
            • 2. 修改websocket请求连接的url
            • 3. 创建nginx容器
            • 4. docker查看nginx容器
            • 5. 浏览器运行前端项目
      • 六、部署微信小程序
            • 1. 修改axios请求的url
            • 2. 运行微信小程序
      • 七、资料

无需上线微信小程序,一站式部署部署微信小程序、java后端代码、nginx等。
推荐看本篇前,先观看黑马docker快速入门到部署3小时,看完视频再看本篇,苍穹外卖100%部署成功,并且理解透彻每一步。
苍穹外卖使用jdk11或jdk17进行编译,以下部署都是根据jdk11或jdk17来部署的。可以使用其他版本的jdk,只需要拉取到对应jdk的镜像即可。
一步一步跟着走,保证没问题!

一、docker自定义网络

1. 原因:

由于创建部署的每个容器的ip地址都会改变,且一些容器的私网ip地址不在同一个网段(网络或局域网)中,这就造成容器与容器之间的访问变得困难。比如:java后端连接mysql时,如果java后端项目这个容器和mysql容器不在同一个局域网中,它们之间是无法访问的,给每个容器配置公网ip也不现实。

2. 原理作用

自定义网络,就是创建一个局域网,将每一个容器都添加到这个局域网中,每个容器都有这个局域网的固定私网ip;同时,访问各个容器时,直接使用容器名代替容器的私网ip

3. docker创建网络
docker network create heima

创建一个网络名为黑马的局域网。各个容器在创建运行时,可以加入这个heima局域网中。

4. 举例说明(举个例子,不用操作)
  1. 创建java后端项目容器(demo项目)并加入heima局域网中。
    使用--network heima加入heima局域网中
docker run -d --name demo --network heima -p 8080:8080 demo
  1. 创建mysql容器并加入heima局域网中。
    使用--network heima加入heima局域网中
docker run -d  --name mysql  -p 3306:3306  -e TZ=Asia/Shanghai -e MYSQL_ROOT_PASSWORD=123 --network heima mysql
  1. java项目连接mysql
    因为java项目和mysql在同一个局域网heima中,并且可以使用容器名代替容器的ip地址。那么,连接mysql的url为
url = jdbc:mysql://mysql:3306/数据库名

二、部署MySQL

先将MySQL容器于本地目录进行挂载,挂载后,MySQL的数据所在的文件路径就可以清晰的展示出来,可以直接通过宿主机(云服务器)所挂载的本地目录查找MySQL数据。
同时,下次再创建MySQL容器时,可以继续使用本地目录进行挂载,这样新创建的MySQL容器就会有本地目录的表数据了。

1. 创建本地目录

创建mysql文件夹,里面包含了conf文件夹和init文件夹
文末提供了mysql文件夹,可以直接使用提供的myslq文件夹,跳过这个步骤。
在这里插入图片描述
init文件夹中可以放入苍穹外卖数据的sql文件,这样在docker创建mysql容器时,可以自动执行sql文件,创建苍穹外卖的数据库。
在这里插入图片描述
conf文件夹中含有配置文件,用来确定数据库编码的文件
在这里插入图片描述
sky-take-out文件内容为

[client]
default_character_set=utf8mb4
[mysql]
default_character_set=utf8mb4
[mysqld]
character_set_server=utf8mb4
collation_server=utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
2. 使用xftp、MobaXerm等应用程序将mysql这个文件夹复制到服务器的/root目录下

在这里插入图片描述

3. 创建MySQL容器,完成本地目录挂载

原理:

  • 挂载/root/mysql/data到容器内的/var/lib/mysql目录
  • 挂载/root/mysql/init到容器内的/docker-entrypoint-initdb.d目录(初始化的SQL脚本目录)
  • 挂载/root/mysql/conf到容器内的/etc/mysql/conf.d目录(这个是MySQL配置文件目录)

docker命令:

docker run -d \--name mysql \-p 3306:3306 \-e TZ=Asia/Shanghai \-e MYSQL_ROOT_PASSWORD=123 \-v ./mysql/data:/var/lib/mysql \-v ./mysql/conf:/etc/mysql/conf.d \-v ./mysql/init:/docker-entrypoint-initdb.d \mysql

其中,–name mysql的mysql是创建的MySQL的容器名; 最后一行的mysql是mysql镜像名,不加版本号就默认是mysql最新版的镜像。

4. docker展示部署结果

如下结果,则说明MySQL容器创建成功
在这里插入图片描述
连接成功,如下:
在这里插入图片描述

5. 使用navicat连接服务器上部署的MySQL

连接
在这里插入图片描述

三、部署redis

1. 创建并运行redis容器

docker命令:

docker run -d --name redis -p 6379:6379 --network heima --requirepass root redis

其中第一个redis是redis容器名,可更改;第二个redis是redis镜像名,不加版本号默认是最新的redis镜像。root表示的是redis的密码。-p后面的就是开放的端口号,redis默认6379.

2. docker展示部署结果

在这里插入图片描述

3. redis可视化工具连接服务器上的redis容器

使用Another Redis Desktop Manager等redis可视化工具连接:
在这里插入图片描述

连接成功就会显示出ip地址和redis,可以新增key试试有没有效果。连接成功则说明redis部署成功。

四、部署java后端

1. 创建jdk镜像

选项一:导入openjdk11的压缩包,创建jdk11镜像
可以使用这里提供的openjdk11的压缩包(资源在文末),
在这里插入图片描述

将jdk.tar赋值到/root目录下,在/root目录下执行docker命令,将压缩包(.tar包)加载成jdk11镜像

docker load -i jdk.tar

jdk11镜像:
在这里插入图片描述
选项二:使用国内镜像源,拉取openjdk17的镜像
可以在openjdk17国内镜像源里面获取openjdk17镜像源地址。
在这里插入图片描述

使用docker命令

docker pull 国内镜像地址

openjdk17镜像下载后:
在这里插入图片描述
将该镜像添加别名,下载的镜像名太长了。

docker  tag  旧镜像名  新镜像名

这里将openjdk17添加的别名为:

docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/openjdk:17-slim openjdk:17-jdk-slim 
2. 修改后端项目的配置信息

idea打开苍穹外卖项目,修改application-dev.yml中的配置信息。
修改一下内容即可:
在这里插入图片描述

3. 将苍穹外卖后端项目打包(.jar包)

跳过maven测试,直接打包:
在这里插入图片描述
这个样子的jar包:

在这里插入图片描述

4. 编写DockerFile文件

编写DockerFile文件(文件没有后缀),创建苍穹外卖后端项目的镜像。

# 基础镜像
FROM openjdk:17-jdk-slim
# 设定时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 拷贝jar包
COPY sky-server-1.0-SNAPSHOT.jar /app.jar
# 入口
ENTRYPOINT ["java", "-jar", "/app.jar"]

需要注意的是,sky-server-1.0-SNAPSHOT.jar是苍穹外卖打成jar包的名字,根据打成的jar包名字进行更改。同时按照jdk的版本进行更改:

  • jdk11编译的苍穹外卖,将openjdk:17-jdk-slim修改为openjdk:11.0-jre-buster
  • jdk17编译的苍穹外卖,则不用修改
5. 创建苍穹外卖后端项目的镜像

将DockerFile文件和jar包复制到云服务器的/root目录下
在这里插入图片描述

在/root目录下,执行DockerFile命令:

docker build -t sky .

注意:sky为后端项目的镜像名。

6. 创建苍穹外卖后端项目容器

docker命令:

docker run -d --name sky-take-out --network heima -p 8080:8080 sky
7. docker查看苍穹外卖后端项目容器
docker ps

在这里插入图片描述

8. 浏览器浏览器访问后端项目。

地址栏输入:http://云服务器ip地址:8080/doc.html
在这里插入图片描述

五、部署nignx前端项目(文末提供了nginx相关的资源)

苍穹外卖管理端资源部署在nginx中。因此,访问管理端资源,必须在云服务器中部署nginx。
如果你的后端项目的容器名是sky-take-out,可以使用这里提供的nginx文件夹,跳过下面1和2,无需修改nginx的相关配置,直接跳到的:3. 创建nginx容器

在这里插入图片描述

1. 修改nginx.conf文件

第一处修改:
替换以下内容:

location / {root   html/sky;index  index.html index.htm;}

替换为:

location / {root /usr/share/nginx/html/sky;}

第二处修改:
将nginx/conf/nginx.conf文件,修改nginx.conf::
在这里插入图片描述
在这里插入图片描述

2. 修改websocket请求连接的url

在nginx中找到app.d0aa4eb3.js文件
在这里插入图片描述
编辑器进入该文件,ctl+f搜索ws://localhost/ws/将localhost修改为云服务器的ip地址。
在这里插入图片描述
这样修改后,通过WebSocket协议,用户下单后,管理端就可以实时接收到下单提醒和催单提醒。

3. 创建nginx容器

第一步:创建文件夹nginx,包含了苍穹外卖资源的nginx的html文件夹和刚刚修改的nginx.conf文件。
在这里插入图片描述
第二步:将nginx文件夹复制到云服务器的/root目录下
这一步的作用是:为创建nginx容器时完成本地目录挂载提供本地目录资源。
在这里插入图片描述

第三步:创建nginx容器

docker run -d \--name nginx \-p 80:80 \-v /root/nginx/html:/usr/share/nginx/html \-v /root/nginx/nginx.conf:/etc/nginx/nginx.conf \--network heima \nginx
4. docker查看nginx容器

在这里插入图片描述

5. 浏览器运行前端项目

浏览器地址栏输入:云服务器ip地址
在这里插入图片描述
在这里插入图片描述

六、部署微信小程序

微信小程序对应苍穹外卖的用户端。微信小程序无需上线,修改小程序发送axios的url就可以在微信开发者工具中,使微信小程序访问到部署到云服务器上的苍穹外卖。

1. 修改axios请求的url

原来微信小程序的axios请求
在这里插入图片描述
在微信开发者工具中,找到vendor.js文件。
ctrl+f 搜索 baseUrl,将baseUrl的值修改为如下:
在这里插入图片描述

修改后,微信小程序发送的请求就会到部署到云服务器上的nginx上,由nginx代理转发到后端容器中。

2. 运行微信小程序

在这里插入图片描述

七、资料

苍穹外卖部署资料
喜欢的话就点赞和关注吧!!!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词