苍穹外卖部署到ECS/服务器方案,以及Docker拉镜像解决方案
创始人
2024-09-25 10:47:05
0

24年7月份更新:

因为某些众所周知的原因,docker pull现在不能直接拉镜像了,翻墙也难搞,所以拉镜像得另辟蹊径了。

配置yum源、下载docker和配置镜像加速就不赘述了,网上大把。

CentOS8 更改YUM源_centos8更换yum源-CSDN博客

CentOS 8.4安装Docker - 追逐时光者 - 博客园 (cnblogs.com) 

常用images可以在这里找到:   

AtomHub 可信镜像仓库平台 · OpenAtom Foundation (atomgit.com)

但是AtomHub有点少,RocketMQ和MinIO等都没有。不过对于苍穹外卖,也够用了 

或者通过 Docker Proxy 镜像加速 这种方法拿到镜像。

找到常用的镜像和版本后,拉下来,应该会显示这样:
 

由于是第三方拉的镜像,所以名字会很长,以后创建容器都得输这么长,很不方便。所以建议重命名:
 

 docker tag 镜像id 你想改成的名字:版本号

当然,[:版本号]这里是可选的,如果拉的是latest,那可以不加

重命名后就会有两个镜像,只是其中一个是重命名后的

再通过

docker rmi 名字很长的镜像的名字

删掉旧的就行了。 

准备阿里云ECS服务器

领服务器网上有很多教程(此处不作赘述)

Huawei云、Ali云还有其他很多地方都有服务器可以白嫖,本质都一样,所以挑个能找到的就行。我最开始找的ali的,就用这个来做示范了。

唯一要注意的是选哪种服务器,有centos、ubantu、Windows Server等,根据熟悉程度选就行。

我这里选的是centos。

其他的不再赘述。

领取完服务器后就能看到了:

 主要是要记住公网IP。实例名称可以改一下,这个只是方便自己看。

准备开放端口

云服务器不像本地localhost,在后面拼个端口号就能访问到相应应用,需要手动开启。

开启入口在控制台->网络与安全->安全组->创建安全组

在入方向->手动添加,选择想要开放的端口号就可以。建议提前想好要开放的端口。

比如数据库3306 、redis6379、nginx80、苍穹外卖项目端口(假设为8080)。

注意,后面nginx、mysql、redis和项目都使用docker部署,所以这里的端口指的是服务器本机开放的端口(不知如何表达)

就是说,举个例子,在创建 nginx docker的时候,指定了端口“-p 8089:80”,那么为了正常访问nginx应该开放的是8089;同理,如果你想要创建MySQL docker时指定“-p 6380:6379”,那应该开放的就是6380.

开放完端口后,记得把实例加进安全组:

点进安全组->实例列表->实例加入安全组

准备前端文件

建议下个tree,这个可以以树形结构列出目录和文件,挺方便的:

yum install tree -y

是否需要做这一步取决于你是否要把苍穹外卖改成其它什么XXX外卖。

如果要改成自己的项目名称、logo的话,找到前端代码,查找替换名字、整几张相同规格图片替换即可。

当然完全可以自己写一个前端(逃

步骤参考

后面的步骤参考这一篇:

苍穹外卖部署到云服务器使用Docker学习笔记-CSDN博客

我根据自己需要做些改变和补充

准备后端文件

把苍穹外卖的yml文件中数据库和redis的host改成上面记住的公网ip,注意,数据库密码和redis密码提前想好并记住。

然后IDEA打包,把jar包传到服务器上即可。 

使用docker部署nginx、redis、mysql

还是参考上面提到的文章。

nginx

部署好nginx后,在浏览器访问 [ 公网IP+nginx docker端口 ] 应该就能看到前端了,不过第一次加载会很慢。

redis

 redis.conf配置文件(参考):

appendonly yes requirepass 你的密码 slowlog-log-slower-than 1000 slowlog-max-len 1000

slowlog两行是慢查询的配置,

dlower-than 1000 表示超过1000μs(即1ms)的查询为慢查询

max-len 1000 表示保留1000条慢查询日志。

以后可以根据慢查询日志来找性能瓶颈。

docker run --restart=always \ -p 6379:6379 \ --name EcsRedis \ -v /dockerapps/redis/conf/redis.conf:/etc/redis/redis.conf \ -v /dockerapps/redis/data:/data \ -v /etc/localtime:/etc/localtime \ -d redis \  redis-server /etc/redis/redis.conf

端口按你自己想要开放的设置,和上面你在ECS控制台开放的端口一致就可以。

其中/dockerapps/**里面是自己创建的用于存放和管理redis配置文件和数据的目录,建议自定义,方便管理。

-v /etc/localtime:/etc/localtime \这一行是把服务器的时间配置文件绑定到容器内,否则会出现容器内时间和服务器时间不一致的问题,一般是差一个时区,即容器内时间慢8小时。

部署好redis后,可以通过命令行运行redis验证

docker exec -it myredis redis-cli

或者直接通过其他redis管理工具(比如Another Redis Desktop Manager)测试连接

mysql 

docker run -d \   --name EcsMysql \   -p 3306:3306 \   -e TZ=Asia/Shanghai \   -e MYSQL_ROOT_PASSWORD=你的密码 \   mysql

手动设置时区,避免时间不一致。

同样,部署完后可以通过

docker exec -it mysql bash

进入命令行,然后正常登录mysql测试一下就行

同样可以使用数据库管理工具测试连接

部署后端代码 

注意,参考文章里的DockerFile jdk版本是11,这个要根据自己苍穹外卖所使用的java版本来写,我的是17,所以就改成17。

这里就是上面提到的端口注意事项,安全组里开放的后端端口就是这里的8081,项目里yml文件的端口就是8080。记得对应上,

如果这里创建docker映射的是8082:8080,安全组开放的是8081,或者

创建docker映射的是8081:8080,结果自己苍穹外卖的yml文件端口写的是8088

这样当然是运行不了的。

注意:还是容器时间和服务器时间的问题,创建docker容器时要手动指定时区,否则下单会因为时间对不上直接失败。

DockerFile参考:
(这个DockerFile是9月份补的,这时候docker pull已经被限制了,所以你得自己找docker的jdk)

FROM hub.atomgit.com/amd64/openjdk:17-jdk-slim LABEL maintainer=你的名字。当然可以不写 ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone COPY *.jar   /app.jar ENTRYPOINT ["java","-jar","/app.jar"]

 部署好后,直接根据ip+端口去访问一下Knife4j文档看能不能看到就好。

修改nginx.conf文件中的转发规则时,可以直接修改这里:

就不用在下面手动一个一个改了。 

注意!后面的端口是你苍穹外卖docker开放的端口。不是nginx的端口。

其他

WebSocket失灵的问题上面提到的文章也有修改方法,这里不重复了。不过还是听不到那个提示音的,搞不定。

相关内容

热门资讯

安卓系统为什么没网络,探究原因... 手机没网络,这可真是让人头疼的小麻烦!你有没有遇到过这种情况:手机屏幕上显示着“无网络连接”,而你明...
安卓苹果换系统安装教程,安卓与... 亲爱的手机控们,是不是觉得手机用久了,系统卡得像蜗牛爬?别急,今天就来教你怎么给安卓和苹果手机换上全...
魅族安卓系统下载软件,尽享智能... 你有没有发现,最近手机圈里又掀起了一股热潮?没错,就是魅族的新款手机!这款手机不仅外观时尚,性能强大...
平板电脑安卓系统12墨,平板电... 亲爱的读者们,你是否也和我一样,对科技新品的到来充满期待?今天,我要和你聊聊一款让人眼前一亮的新品—...
荣耀畅玩刷安卓系统,解锁更多可... 你有没有想过,你的荣耀畅玩手机,其实可以焕发第二春呢?没错,就是刷上全新的安卓系统!想象你的手机瞬间...
为什么安卓系统老是卡机,性能瓶... 手机卡顿真是让人头疼!尤其是安卓系统,有时候用着用着就突然卡住了,让人忍不住想摔手机。那么,为什么安...
哪款盒子是安卓系统,智能娱乐新... 你有没有想过,在这个智能设备横行的时代,哪款盒子是安卓系统最让人心动呢?安卓系统以其开放性和强大的兼...
安卓Q删除系统文件,安全操作与... 亲爱的安卓用户们,你是否曾在使用安卓手机时,不小心误删了重要的系统文件,心里直发慌?别担心,今天就来...
安卓12系统怎么下载谷歌,安卓... 你有没有听说安卓12系统已经发布了?是不是也想赶紧升级体验一下新系统的魅力呢?不过,别急,升级之前你...
安卓系统怎么清除后台,安卓系统... 手机后台程序太多,是不是感觉手机越来越卡?别急,今天就来教你怎么轻松清除安卓系统的后台程序,让你的手...
ios和安卓重置系统,轻松恢复... 手机用久了是不是感觉卡得要命?别急,今天就来给你揭秘如何给iOS和安卓手机来个彻底的重置,让它焕发新...
华为的手机系统与安卓,融合与创... 亲爱的读者们,你是否曾好奇过,为什么华为的手机系统能在众多安卓手机中独树一帜?今天,就让我们一起揭开...
安卓系统如何加通知声音,安卓系... 你有没有发现,手机上的通知声音有时候就像是个小闹钟,总是不请自来地提醒你各种信息。不过,有时候这个“...
安卓系统怎么锁定主屏,安卓系统... 你是不是也和我一样,手机里藏着不少小秘密,不想让别人轻易窥探呢?别急,今天就来教你怎么给安卓手机的主...
安卓系统激活提示谷歌,谷歌助你... 你刚刚入手了一台全新的安卓手机,是不是兴奋得手舞足蹈?不过,别急着高兴,激活手机之前,可别忘了谷歌的...
缤越导航安卓系统,智能出行新体... 你有没有发现,现在汽车导航系统越来越智能了?这不,缤越导航安卓系统就让我眼前一亮。想象坐在车里,手指...
安卓系统好的阅读软件,精选阅读... 你有没有发现,手机里装了那么多应用,阅读软件可是占据了我们日常使用时间的大头呢!安卓系统上的阅读软件...
统信安卓系统下载,下载与体验新... 你有没有想过,手机系统也能像换衣服一样随心所欲地换?没错,今天就要给你揭秘一个超级实用的秘密——统信...
华为新系统鸿蒙安卓,华为安卓融... 你知道吗?最近科技圈可是炸开了锅,华为的新操作系统鸿蒙系统,竟然和安卓系统来了个亲密接触!这可不是一...
安卓系统拍证件照,轻松搞定 你有没有发现,现在拍照已经成为我们生活中不可或缺的一部分?无论是记录生活点滴,还是办理各种证件,拍照...