苍穹外卖部署到云服务器使用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 <容器ID>

  •  然后通过云服务器的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 <镜像id>
  • 使用本地连接工具测试一下数据库是否可以连接,连接成功就没问题

  •  接着将你之前本地的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 .
  • 建立java容器(最好先检查容器是否全部启动,指令是docker ps)
docker run -d -p 8081:8080 --name sky java-sky:v1.0 
  • 打开nginx.conf文件,修改一下nginx的转发规则,将请求转发到后端

注:该文件在/data/conf/目录下,就不另外配图了

  •  重启nginx容器,使配置生效
docker restart <容器ID>
  • 浏览器测试,你的云服务器IP+8080端口访问,成功访问

就此,项目部署完成。 

四:问题解决

  • 39
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 24
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值