苍穹外卖部署到云服务器使用Docker学习笔记
通过部署docker学习过程中产生的经验写下本文,本文完成前端和后端代码部署,网上的教程对小白很不友好,写下本文方便自己以后自己查阅并分享给大家让大家尽量少踩坑,可以顺利学会docker并成功部署项目
注:服务器系统使用CentOS7,远程工具使用宝塔,宿主机(服务器)使用的端口需要在安全组开放后才可以访问,本文所有代码如果不了解尽量复制
一:环境安装
1.了解Docker
因为我们是使用docker部署,所以需要首先大概了解docker,docker是一个轻量化的容器,它有着许多优点,轻量化,非常好的隔离性等等,下面是一张docker的架构图
2.安装Docker
因为我们是上线项目,首先需要一个服务器,通过远程连接工具连接到云服务器,以下指令都在服务器终端执行
- 为确保环境一致,先执行指令移除以前docker相关包
sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine- 配置yum源,因为国外的资源下载很慢甚至无法访问,所以我们配置到阿里云的镜像源加速下载
sudo yum install -y yum-utils sudo yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 重新安装docker并启动
sudo yum install -y docker-ce docker-ce-cli containerd.io systemctl enable docker --now
二:部署前端环境
前端代码是通过ngxin进行访问的,nginx是一个高性能的HTTP和方向代理web服务器,所以我们先创建nginx容器
1.拉取nginx镜像
默认下载最新版本
docker pull nginx #下载最新版
2.配置宿主机(云服务器)的目录
- 打开服务器的宝塔面板,进入文件,在服务器根目录新建data目录
- 进入data目录,新建conf和html目录
- 先进入html目录,上传本地的前端代码到云服务器上
- 再进入conf目录,上传本地的nginx.conf文件到云服务器上
- 防止有人找不到本地的前端代码,这里附上我自己的,可以参考一下
将以上步骤都完成后
3.创建并启动nginx容器
- 我们的配置文件是访问80端口,所以我们将宿主机的8080端口与容器的80端口进行映射,然后再选择挂载目录,挂载的目录就是我们刚才创建的目录
注:一般情况下,在挂载目录时会自动创建不存在的目录。如果报错信息提示找不到目录,还是老老实实自己创建然后再进行挂载
docker run -d -p 8080:80 \ -v /data/html:/usr/share/nginx/html:ro \ -v /data/conf/nginx.conf:/etc/nginx/nginx.conf \ --name mynginx \ nginx
- 查看当前容器是否创建成功
docker ps -a #查看当前所有容器 docker ps #查看当前正在运行的容器
4.部署前端代码
- 到宝塔面板文件中修改nginx.conf文件
- 在终端重启容器使配置生效,容器ID就是下图画横线的,每个人不一样,自行查看
docker restart
- 然后通过云服务器的ip加你所映射的端口,我们之前是映射的8080端口,通过这个端口进行访问
这个时候前端代码就部署完成了
三:部署后端环境
1.打包上传后端代码
- IDEA打开你的项目工程,在application-dev.yml文件中修改datasource和redis的主机和端口,如下图
- 然后打开右边的maven,点击跳过测试,然后执行package
- 接着在你的本地就会生成一个jar包,一般在该目录的target目录下,参考下图
- 接着打开宝塔面板的文件,在data目录新建一个sky目录,在sky目录上传刚才我们打包好的jar包
2.配置Redis
- 拉取Redis镜像,默认最新版
docker pull redis
- 创建redis容器,因为redis需要修改配置文件,我们采用外部挂载的方式会方便很多
docker run -v /data/redis/redis.conf:/etc/redis/redis.conf \ -v /data/redis/data:/data \ -d --name myredis \ -p 6380:6379 \ redis:latest redis-server /etc/redis/redis.conf
- 接着打开宝塔面板文件,进入redis.conf目录,在该目录有redis.conf文件就不管,没有就自己创建
- 编辑redis.conf文件
#持久化存储 appendonly yes #设置redis密码 #requirepass 123456
- 因为我没有设置密码,所以我把它注释了,这个根据你项目的配置文件而定,有的话自己加上
- 接着用桌面端工具测试一下是否可以连接,连接成功就没问题
3.配置MySQL
- 拉取MySQL镜像,默认为最新版
docker pull mysql
- 创建mysql容器
这里的镜像id需要使用docker ps -a命令查看自己对应的mysql镜像id,和之前使用过的操作一样
docker run -id --name=mysql -p 3305:3306 -e MYSQL_ROOT_PASSWORD=123456
- 使用本地连接工具测试一下数据库是否可以连接,连接成功就没问题
- 接着将你之前本地的sky_take_out转为sql文件导入这里
4.部署后端代码
- 之前我们已经将jar文件上传到服务器上,然后我们在项目目录下编写DockerFile文件
打开宝塔面板文件,进入data之前创建的sky目录,在该目录新建名为DockerFile的文件

- 编辑DockerFile文件(jdk可以修改,因为我用的jdk11)
#拉取jdk11版本的镜像 FROM openjdk:11-jdk-slim #作者自己自定义 LABEL maintainer=yang COPY *.jar /app.jar ENTRYPOINT ["java","-jar","/app.jar"]
- 然后终端输入指令转到该目录下,查看文件内容,你就会看到你刚刚编写的内容
cd /data/sky/ #转到对应目录 cat DockerFile #查看文件内容
- 构建docker镜像,后面的 . 不要误删了,代表在该目录工作(这句代码最好复制)
docker build -t java-sky:v1.0 -f DockerFile .
- 构建docker镜像,后面的 . 不要误删了,代表在该目录工作(这句代码最好复制)
- 然后终端输入指令转到该目录下,查看文件内容,你就会看到你刚刚编写的内容
- 编辑DockerFile文件(jdk可以修改,因为我用的jdk11)
- 之前我们已经将jar文件上传到服务器上,然后我们在项目目录下编写DockerFile文件
- 接着将你之前本地的sky_take_out转为sql文件导入这里
- 使用本地连接工具测试一下数据库是否可以连接,连接成功就没问题
- 创建mysql容器
- 拉取MySQL镜像,默认为最新版
- 接着用桌面端工具测试一下是否可以连接,连接成功就没问题
- 因为我没有设置密码,所以我把它注释了,这个根据你项目的配置文件而定,有的话自己加上
- 编辑redis.conf文件
- 接着打开宝塔面板文件,进入redis.conf目录,在该目录有redis.conf文件就不管,没有就自己创建
- 创建redis容器,因为redis需要修改配置文件,我们采用外部挂载的方式会方便很多
- 拉取Redis镜像,默认最新版
- 接着打开宝塔面板的文件,在data目录新建一个sky目录,在sky目录上传刚才我们打包好的jar包
- 接着在你的本地就会生成一个jar包,一般在该目录的target目录下,参考下图
- 然后打开右边的maven,点击跳过测试,然后执行package
- IDEA打开你的项目工程,在application-dev.yml文件中修改datasource和redis的主机和端口,如下图
- 然后通过云服务器的ip加你所映射的端口,我们之前是映射的8080端口,通过这个端口进行访问
- 在终端重启容器使配置生效,容器ID就是下图画横线的,每个人不一样,自行查看
- 到宝塔面板文件中修改nginx.conf文件
- 查看当前容器是否创建成功
- 我们的配置文件是访问80端口,所以我们将宿主机的8080端口与容器的80端口进行映射,然后再选择挂载目录,挂载的目录就是我们刚才创建的目录
- 防止有人找不到本地的前端代码,这里附上我自己的,可以参考一下
- 再进入conf目录,上传本地的nginx.conf文件到云服务器上
- 先进入html目录,上传本地的前端代码到云服务器上
- 进入data目录,新建conf和html目录
- 打开服务器的宝塔面板,进入文件,在服务器根目录新建data目录
- 重新安装docker并启动
- 配置yum源,因为国外的资源下载很慢甚至无法访问,所以我们配置到阿里云的镜像源加速下载
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!




















