docker部署springcloud微服务架构的商品秒杀项目

1.部署项目所需的基础服务

1.1部署redis缓存

[root@martin-host web]# docker run -tid --name=redis --hostname=redis --restart=always --net=host redis:3.2.10 
33ff624e19c309793fdfa23dbd5c0a88490637cd5e0090bfee7dc98c63721732

[root@martin-host web]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS     NAMES
33ff624e19c3   redis:3.2.10   "docker-entrypoint.s…"   5 seconds ago   Up 4 seconds             redis

[root@martin-host web]# netstat -tunlp | grep 6379
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN      2570/redis-server * 
tcp6       0      0 :::6379                 :::*                    LISTEN      2570/redis-server * 

1.2部署MySQL数据库

[root@martin-host web]# docker run -tid --name=web_db --hostname=web_db --restart=always --net=host -e MYSQL_ROOT_PASSWORD=admin mysql:5.7
4ba7f19a4e15ef11facd18e329796dc391c0d0ce1a144fe7f67380fad65ab043
[root@martin-host web]# 
[root@martin-host web]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED              STATUS              PORTS     NAMES
4ba7f19a4e15   mysql:5.7      "docker-entrypoint.s…"   4 seconds ago        Up 3 seconds                  web_db
33ff624e19c3   redis:3.2.10   "docker-entrypoint.s…"   About a minute ago   Up About a minute             redis

[root@martin-host web]# docker cp shop_goods.sql web_db:/
Successfully copied 3.58kB to web_db:/
[root@martin-host web]# docker cp shop_member.sql web_db:/
Successfully copied 3.58kB to web_db:/
[root@martin-host web]# docker cp shop_seckill.sql web_db:/
Successfully copied 7.68kB to web_db:/
[root@martin-host web]# 
[root@martin-host web]# docker exec -ti web_db bash
root@web_db:/# 
root@web_db:/# mysql -uroot -padmin < /shop_goods.sql 
mysql: [Warning] Using a password on the command line interface can be insecure.
root@web_db:/# mysql -uroot -padmin < /shop_member.sql 
mysql: [Warning] Using a password on the command line interface can be insecure.
root@web_db:/# mysql -uroot -padmin < /shop_seckill.sql 
mysql: [Warning] Using a password on the command line interface can be insecure.
root@web_db:/# 
root@web_db:/# mysql -uroot -padmin
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.7.35 MySQL Community Server (GPL)

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| shop_goods         |
| shop_member        |
| shop_seckill       |
| sys                |
+--------------------+
7 rows in set (0.00 sec)

mysql> 
mysql> grant all on *.* to 'root'@'%' identified by 'admin';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> exit
Bye
root@web_db:/# exit
exit

1.3部署rabbitmq消息队列

[root@martin-host web]# docker run -tid --name=rabbitmq --hostname=rabbitmq --net=host rabbitmq:3-management 
d9e860cf2773cbf4c6462483fb5dabea600b00295f44f55d088f5797de0c8efa
[root@martin-host web]# 
[root@martin-host web]# docker ps -a
CONTAINER ID   IMAGE                   COMMAND                  CREATED         STATUS         PORTS     NAMES
d9e860cf2773   rabbitmq:3-management   "docker-entrypoint.s…"   3 seconds ago   Up 2 seconds             rabbitmq
4ba7f19a4e15   mysql:5.7               "docker-entrypoint.s…"   4 minutes ago   Up 4 minutes             web_db
33ff624e19c3   redis:3.2.10            "docker-entrypoint.s…"   6 minutes ago   Up 6 minutes             redis

[root@martin-host ~]# docker exec -ti rabbitmq bash

root@rabbitmq:/# rabbitmqctl add_user liushao admin
Adding user "liushao" ...
Done. Don't forget to grant the user permissions to some virtual hosts! See 'rabbitmqctl help set_permissions' to learn more.

root@rabbitmq:/# rabbitmqctl set_permissions liushao ".*" ".*" ".*"
Setting permissions for user "liushao" in vhost "/" ...
root@rabbitmq:/# 

2.部署微服务框架

2.1部署erueka注册中心

负责注册所有服务的通信地址

[root@martin-host web]# cat eurekaDockerfile 
FROM adoptopenjdk/openjdk8:latest

COPY eureka-server-1.0-SNAPSHOT.jar /eureka-server.jar

CMD ["java", "-jar", "/eureka-server.jar"]
[root@martin-host web]# 
[root@martin-host web]# docker build -t eureka-server:1.0 -f eurekaDockerfile ./ 

root@martin-host web]# docker run -tid --name=eureka-server --hostname=eureka-server --restart=always --net=host eureka-server:1.0 
c682585f005c0be0ffae1dba1232410f92045c0763de5393d1efaedd79a0bdb3

[root@martin-host web]# docker logs eureka-server 
2024-07-19 02:40:53.881  INFO 1 --- [           main] .s.c.n.e.s.EurekaAutoServiceRegistration : Updating port to 8761

2.2部署config-server配置中心

负责集中管理所有业务组件的配置文件、从远程的git服务器拉取配置文件

[root@martin-host web]# cat configDockerfile
FROM adoptopenjdk/openjdk8:latest

COPY config-server-1.0-SNAPSHOT.jar /config-server.jar

CMD ["java", "-jar", "/config-server.jar"]
[root@martin-host web]# 
[root@martin-host web]# docker build -t config-server:1.0 -f configDockerfile ./

[root@martin-host web]# docker run -tid --name=config-server --hostname=config-server --net=host --restart=always config-server:1.0 

[root@martin-host web]# docker logs config-server 
2024-07-19 02:49:37.965  INFO 1 --- [           main] .s.c.n.e.s.EurekaAutoServiceRegistration : Updating port to 9100

2.3部署zuul-server 网关

负责集中接收处理请求、反向代理 、负载均衡

[root@martin-host web]# cat zuulDockerfile
FROM adoptopenjdk/openjdk8:latest

COPY zuul-server-1.0-SNAPSHOT.jar /zuul-server.jar

CMD ["java", "-jar", "/zuul-server.jar"]
[root@martin-host web]# 
[root@martin-host web]# docker build -t zuul-server:1.0 -f zuulDockerfile ./

[root@martin-host web]# docker run -tid --name=zuul-server --hostname=zuul-server --net=host --restart=always zuul-server:1.0 

[root@martin-host web]# docker logs zuul-server 
2024-07-19 02:56:57.602  INFO 1 --- [           main] .s.c.n.e.s.EurekaAutoServiceRegistration : Updating port to 9000

3.部署业务

3.1部署会员服务

[root@martin-host web]# cat memberDockerfile
FROM adoptopenjdk/openjdk8:latest

COPY member-server-1.0-SNAPSHOT.jar /member-server.jar 

CMD ["java", "-jar", "/member-server.jar"]

[root@martin-host web]# docker build -t member-server:1.0 -f memberDockerfile ./

[root@martin-host web]# docker run -tid --name=member-server --hostname=localhost --net=host --restart=always member-server:1.0 

2024-07-19 03:26:42.696  INFO 1 --- [           main] .s.c.n.e.s.EurekaAutoServiceRegistration : Updating port to 8083


3.2 部署商品展示业务

[root@martin-host web]# cat goodDockerfile
FROM adoptopenjdk/openjdk8:latest

COPY good-server-1.0-SNAPSHOT.jar /good-server.jar

CMD ["java", "-jar", "/good-server.jar"]
[root@martin-host web]# 
[root@martin-host web]# docker build -t good-server:1.0 -f goodDockerfile ./

[root@martin-host web]# docker run -tid --name=good-server --hostname=localhost --net=host --restart=always good-server:1.0 

2024-07-19 03:29:49.555  INFO 1 --- [           main] .s.c.n.e.s.EurekaAutoServiceRegistration : Updating port to 8084


3.3部署秒杀业务

[root@martin-host web]# cat seckillDockerfile
FROM adoptopenjdk/openjdk8:latest

COPY seckill-server-1.0-SNAPSHOT.jar /seckill-server.jar

CMD ["java", "-jar", "/seckill-server.jar"]
[root@martin-host web]# 
[root@martin-host web]# docker build -t seckill-server:1.0 -f seckillDockerfile ./

[root@martin-host web]# docker run -tid --name=seckill-server --hostname=localhost --net=host --restart=always seckill-server:1.0 

2024-07-19 03:32:56.665  INFO 1 --- [           main] o.s.a.r.c.CachingConnectionFactory       : Created new connection: rabbitConnectionFactory#1c6804cd:0/SimpleConnection@4fdfa676 [delegate=amqp://guest@192.168.183.10:5672/, localPort= 34446]
2024-07-19 03:32:56.851  INFO 1 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8085 (http) with context path ''
2024-07-19 03:32:56.853  INFO 1 --- [           main] .s.c.n.e.s.EurekaAutoServiceRegistration : Updating port to 8085


3.4部署web前端

[root@martin-host web]# cat frontendDockerfile
FROM adoptopenjdk/openjdk8:latest

COPY frontend-server-0.0.1-SNAPSHOT.jar /frontend-server.jar

CMD ["java", "-jar", "/frontend-server.jar"]
[root@martin-host web]# 
[root@martin-host web]# docker build -t frontend-server:1.0 -f frontendDockerfile ./

[root@martin-host web]# docker run -tid --name=frontend-server --hostname=localhost --net=host --restart=always frontend-server:1.0 

2024-07-19 03:36:03.029  INFO 1 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''

3.5部署websocket,实现http长连接

[root@martin-host web]# cat websocketDockerfile
FROM adoptopenjdk/openjdk8:latest

COPY websocket-server-0.0.1-SNAPSHOT.jar /websocket-server.jar

CMD ["java", "-jar", "/websocket-server.jar"]
[root@martin-host web]# 
[root@martin-host web]# docker build -t websocket-server:1.0 -f websocketDockerfile ./
[+] Building 0.5s (7/7) FINISHED                                                                                       docker:default
 => [internal] load build definition from websocketDockerfile                                                                    0.0s
 => => transferring dockerfile: 193B                                                                                             0.0s
 => [internal] load metadata for docker.io/adoptopenjdk/openjdk8:latest                                                          0.0s
 => [internal] load .dockerignore                                                                                                0.0s
 => => transferring context: 2B                                                                                                  0.0s
 => [internal] load build context                                                                                                0.2s
 => => transferring context: 21.84MB                                                                                             0.2s
 => CACHED [1/2] FROM docker.io/adoptopenjdk/openjdk8:latest                                                                     0.0s
 => [2/2] COPY websocket-server-0.0.1-SNAPSHOT.jar /websocket-server.jar                                                         0.2s
 => exporting to image                                                                                                           0.1s
 => => exporting layers                                                                                                          0.1s
 => => writing image sha256:7d681a377f627c30765b92088008d4ac265f182be9ee93efa118400e5667482c                                     0.0s
 => => naming to docker.io/library/websocket-server:1.0                                                                          0.0s
[root@martin-host web]# 
[root@martin-host web]# docker run -tid --name=websocket-server --hostname=localhost --net=host --restart=always websocket-server:1.0  
9fb88729fe38c44841a2691562deb47b428013150fcdc5974d8c06f43630e679

2024-07-19 03:39:14.976  INFO 1 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8088 (http) with context path ''


  • 11
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
1.安装JDK 在进行SpringCloud微服务架构环境部署之前,需要先安装Java Development Kit(JDK),可以从Oracle官网下载最新版本的JDK,然后按照提示安装即可。 2.安装Eclipse Eclipse是一款开源的集成开发环境(IDE),可以用来开发Java应用程序。在进行SpringCloud微服务架构环境部署之前,需要先安装Eclipse。 可以从Eclipse官网下载最新版本的Eclipse,然后按照提示安装即可。 3.安装Maven Maven是一个构建工具,可以用来自动化构建、测试和部署Java应用程序。在进行SpringCloud微服务架构环境部署之前,需要先安装Maven。 可以从Maven官网下载最新版本的Maven,然后按照提示安装即可。 4.安装Docker Docker是一款开源的容器化平台,可以将应用程序打包成容器,方便部署和管理。在进行SpringCloud微服务架构环境部署之前,需要先安装Docker。 可以从Docker官网下载最新版本的Docker,然后按照提示安装即可。 5.安装Kubernetes Kubernetes是一个开源的容器编排系统,可以用来部署、管理和扩展容器化应用程序。在进行SpringCloud微服务架构环境部署之前,需要先安装Kubernetes。 可以从Kubernetes官网下载最新版本的Kubernetes,然后按照提示安装即可。 6.部署SpringCloud微服务架构 在完成以上步骤之后,就可以开始部署SpringCloud微服务架构了。具体步骤如下: (1)创建一个SpringBoot项目,并在pom.xml文件中添加所需的SpringCloud依赖。 (2)在src/main/resources目录下创建一个application.yml配置文件,并配置SpringCloud相关的参数。 (3)使用Maven打包应用程序,并将生成的jar文件上传到Docker镜像仓库。 (4)使用Kubernetes创建一个Deployment对象,用来部署应用程序的容器。 (5)使用Kubernetes创建一个Service对象,用来暴露应用程序的服务。 (6)使用Kubernetes创建一个Ingress对象,用来路由应用程序的请求。 (7)完成以上步骤后,就可以访问应用程序了。 7.总结 以上就是SpringCloud微服务架构环境部署的详细步骤。需要注意的是,在进行部署之前,需要先熟悉Docker和Kubernetes的基本概念和操作方法,以便能够顺利完成部署
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值