目录

一、前言

二、环境准备

1、安装 Docker

2、Docker 安装 MySQL

3、Docker 安装 Redis

4、Docker 安装 Nacos

5、Docker 安装 Nginx

三、部署后端服务

四、部署前端服务

感谢观看!!


一、前言

以谷粒学苑为例,使用 Docker 部署后端服务

二、环境准备

安装之前,确保开放所需要的端口或者关闭防火墙。

使用 阿里云服务器 确保开放安全端口

1、安装 Docker

1、卸载之前的 Docker,没有就忽略这步

sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine

2、安装一些依赖包

yum install -y yum-utils

3、建立远程仓库,不要使用官网的,太慢

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4、更新 yum 软件包索引【非必须】

yum makecache fast

5、安装 Docker 引擎

yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

6、启动docker

# 查看docker的版本信息
docker version
# 启动docker
systemctl start docker
# 查看docker是否启动
ps -ef | grep docker
# 设置docker开机自启动
systemctl enable docker

7、安装 Docker-compose

下载会比较慢,可以多试几次

curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 赋予权限
chmod +x /usr/local/bin/docker-compose
# 查看版本
docker-compose --version

8、查询版本号,查询出来就说明安装成功了

docker-compose -v

2、Docker 安装 MySQL

1、拉取镜像

docker pull mysql:8.0

2、启动容器

MYSQL_ALLOW_EMPTY_PASSWORD:先将密码设置为空,为了方便后续操作,8.0版本较于5.7版本有点复杂。这里如果设置密码,有可能登录不上去

docker run -p 3306:3306 --name mysql  -v /mydata/mysql/log:/var/log/mysql -v /mydata/mysql/data:/var/lib/mysql  -v /mydata/mysql/conf:/etc/mysql -v /mysql/data/mysqlslave/mysqlfiles:/var/lib/mysql-files  -e MYSQL_ALLOW_EMPTY_PASSWORD=yes  -d mysql:8.0

3、设置 mysql 编码

vi /mydata/mysql/conf/my.cnf
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve

4、远程登录报错: Host is not allowed to connect to this MySQL server

# 进入mysql容器
docker exec -it mysql bash
# 进入 mysql,由于启动时没设置密码,直接回车登录。
mysql -u root -p
# 修改远程连接权限
use mysql;
update user set host = '%' where user = 'root';
select host, user from user;
flush privileges;
#完成上面操作之后重启MySQL服务即可。

5、远程登录报错:plugin caching_sha2_password could not be loaded

# 修改远程登陆
# 修改密码过期规则----》永不过期
ALTER USER 'root'@'%' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;
# 更新用户的密码修改加密规则
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
# 刷新权限
FLUSH PRIVILEGES;# 重置密码
ALTER USER 'root'@'%' IDENTIFIED BY '123456';

3、Docker 安装 Redis

1、创建 redis 配置文件,用于容器卷挂载

mkdir -p /mydata/redis/conf
vi /mydata/redis/conf/redis.conf
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1 ::1
#bind 127.0.0.1protected-mode noport 6379tcp-backlog 511timeout 0tcp-keepalive 300daemonize nosupervised nopidfile /var/run/redis_6379.pidloglevel noticelogfile ""always-show-logo yessave 900 1
save 300 10
save 60 10000stop-writes-on-bgsave-error yesrdbcompression yesrdbchecksum yesdbfilename dump.rdbdir ./replica-serve-stale-data yesreplica-read-only yesrepl-diskless-sync norepl-disable-tcp-nodelay noreplica-priority 100lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush noappendonly yesappendfilename "appendonly.aof"no-appendfsync-on-rewrite noauto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mbaof-load-truncated yesaof-use-rdb-preamble yeslua-time-limit 5000slowlog-max-len 128notify-keyspace-events ""hash-max-ziplist-entries 512
hash-max-ziplist-value 64list-max-ziplist-size -2list-compress-depth 0set-max-intset-entries 512zset-max-ziplist-entries 128
zset-max-ziplist-value 64hll-sparse-max-bytes 3000stream-node-max-bytes 4096
stream-node-max-entries 100activerehashing yeshz 10dynamic-hz yesaof-rewrite-incremental-fsync yesrdb-save-incremental-fsync yes

2、拉取镜像

docker pull redis

3、启动容器

docker run -p 6379:6379 --name redis -v /mydata/redis/data:/data  -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf  -d redis redis-server /etc/redis/redis.conf

4、Docker 安装 Nacos

1、拉取镜像

docker pull nacos/nacos-server:2.2.0

2、启动容器

docker run  --name nacos-quick -e  MODE=standalone -p 8848:8848 -d nacos/nacos-server:1.3.0

3、访问:IP地址+8848/nacos

5、Docker 安装 Nginx

1、先随便启动一个 Nginx 复制出里面的配置文件

docker run -p 80:80 --name nginx -d nginx:1.10

2、创建 /mydata/nginx/ 目录, 并切换到此目录下,将 Nginx 配置文件都拷贝文件夹里,并修改名称为 conf

mkdir /mydata/nginx/
cd /mydata/nginx
docker container cp nginx:/etc/nginx .
mv nginx/ conf

3、删除容器,并重新启动 Nginx 容器

docker run -p 80:80 --name nginx --restart=always \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx \
-v /mydata/nginx/conf:/etc/nginx \
-d nginx:1.10

4、访问 IP 地址测试是否启动成功


三、部署后端服务

1、修改项目中的连接地址,改成对应的 IP

2、对项目打包,打包之前确保有maven插件

    <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>

公共类没有主启动类,无需引入

3、打包完,编写 Dockerfile 用于构建镜像

service_cms
# 基础镜像
FROM openjdk:8
# 环境变量
ENV APP_HOME=/apps
# 创建容器默认进入的目录
WORKDIR $APP_HOME
# 复制jar包到容器中
COPY ./service_cms-0.0.1-SNAPSHOT.jar ./service_cms.jar
# 暴露端口
EXPOSE 8004
# 启动命令
ENTRYPOINT ["java","-jar","-Xms100m","-Xmx100m"]
CMD ["service_cms.jar"]
service_edu
FROM openjdk:8
ENV APP_HOME=/apps
WORKDIR $APP_HOME
COPY ./service_edu-0.0.1-SNAPSHOT.jar ./service_edu.jar
EXPOSE 8001
ENTRYPOINT ["java","-jar","-Xms100m","-Xmx100m"]
CMD ["service_edu.jar"]

所有服务都一样,就是换了 jar 包名称,以及 端口号。

4、将 jar 包 以及 Dockerfile 上传到 服务器,尽量统一放到一个文件夹中,管理方便。每一个文件夹对应一个服务的 jar包以及 Dockerfile

5、对所有服务创建镜像:进入到对应服务目录内部执行此命令

docker build -t 新镜像名字:TAG . # 不要忘记TAG 后面有个空格和点

我这里是一个个创建的,比较麻烦,为了方便调试。

可以直接配置 docker-compose 创建镜像并启动容器

4、编写  docker-compose.yaml

version: "3.8"networks:edu:services:# 定义服务名字,只要不冲突即可gateway:# 镜像名字image: gateway:1.0# 自定义容器名字container_name: gatewayports:- "8222:8222"# 网络模式networks:- eduservice_acl:image: service_acl:1.0container_name: service_aclports:- "8009:8009"networks:- eduservice_cms:image: service_cms:1.0container_name: service_cmsports:- "8004:8004"networks:- eduservice_edu:image: service_edu:1.0container_name: service_eduports:- "8001:8001"networks:- eduservice_msm:image: service_msm:1.0container_name: service_msmports:- "8006:8006"networks:- eduservice_order:image: service_order:1.0container_name: service_orderports:- "8007:8007"networks:- eduservice_oss:image: service_oss:1.0container_name: service_ossports:- "8002:8002"networks:- eduservice_statistics:image: service_oss:1.0container_name: service_statisticsports:- "8008:8008"networks:- eduservice_ucenter:image: service_ucenter:1.0container_name: service_ucenterports:- "8160:8160"networks:- eduservice_vod:image: service_vod:1.0container_name: service_vodports:- "8003:8003"networks:- edud

将  docker-compose.yaml 上传到 服务器中

5、编排容器

# 编排前可检查一下配置文件,如果没有任何东西输出就没有问题
docker-compose config -q
# 编排
docker-compose up

到这里后端服务就已经部署完毕

docker logs  容器名   可以通过查看容器日志的方式来调试

四、部署前端服务

前端的部署直接参考这篇博客

谷粒学苑 Vue +NUXT +SpringCloud 部署到服务器_我不是秃神的博客-CSDN博客

感谢观看!!

Docker 部署微服务项目相关推荐

  1. docker部署微服务项目

    上次有人说部署单个springboot项目和ssm写的非常的简单可以写一篇docker部署微服务的结构的文章的吗 安排 什么是微服务? 微服务架构是一种将单个应用程序作为一套小型服务开发的方法,每种应 ...

  2. Java学习 --- docker部署微服务项目

    目录​​​​​​​ 一.创建一个springboot项目 1.1.修改pom.xml文件 1.2.修改application.properties配置文件 1.3.创建controller层和类 1. ...

  3. k8s部署微服务项目

    之前用docker-compose部署微服务项目,但是只能单节点的(那你用微服务架构干啥?),所以想搞一下k8s集群,网上找了下资料没有视频专门讲这一块,自己找了很多资料,搞了蛮长时间的,所以记录一下 ...

  4. IDEA集成Docker插件实现一键自动打包部署微服务项目

    一. 前言 大家在自己玩微服务项目的时候,动辄十几个服务,每次修改逐一部署繁琐不说也会浪费越来越多时间,所以本篇整理通过一次性配置实现一键部署微服务,实现真正所谓的一劳永逸. 二. 配置服务器 1. ...

  5. k8s+jenkins+docker部署微服务实现CI/CD

    "所爱隔山海,山海不可平,海有舟可渡,山有路可行,此爱翻山海,山海皆可平." 作为一个想搞开发的,最近似乎都在干运维,不知道有没有跑偏... 2021.5.14 一般的中小公司个人 ...

  6. Docker部署微服务应用笔记(三)

    Docker安装java:8环境 因为现在都是使用java8开发直接使用命令: docker pull java这是默认下载最新版本镜像 docker pull java:8这是下载指定版本镜像 列出 ...

  7. Docker部署微服务详解

    2019独角兽企业重金招聘Python工程师标准>>> 2013年发布至今,Docker一直广受瞩目,被认为可能会改变软件行业. 但是,许多人并不清楚Docker 到底是什么,要解决 ...

  8. pg安装部署linux_简简单单基于docker部署微服务网关

    ❝ 本文整理于今年3月,收录在个人开源仓库JavaScriptCollection中,其中很多概念不乏借鉴.摘抄自官网,便于复习相关概念,有兴趣的可以直接去仓库Clone文档学习.参考! ❞ 基本概念 ...

  9. jenkins部署微服务项目

    新手上路,对着视频做了一个谷粒的在线教育项目.测试跑通之后,想要自己试着部署到自己的云服务器上,闲着也是闲着不是.言归正传 简介 在微服务架构中,随着服务越来越多,服务的打包部署就会成为一个相当麻烦的 ...

最新文章

  1. lua用于ios开发
  2. Ajax请求Session超时的解决办法:拦截器 + 封装jquery的post方法
  3. android工程建立到最后一步提示unsupported template dependency的解决方法
  4. 分布式数据库技术基础:分布透明性相关知识
  5. 我的第一个 RN 项目-趣闻
  6. layui table数据修改的回显
  7. 麻省理工18年春软件构造课程阅读02“Java基础”
  8. verilog实现矩阵卷积运算
  9. 2022蓝桥杯java
  10. python制作动态二维码步骤_七夕 | 如何用Python制作动态二维码,来哄女朋友开心?...
  11. 首度亮相服贸会,亚马逊云科技如何演绎“大象起舞”?
  12. 蒙特卡洛思想(Monte Carlo思想)
  13. pfSense安装和配置pfBlockerNg
  14. neo4j笔记(一)
  15. MFC画图的基本知识 转载链接http://lc7cl.iteye.com/blog/1336221
  16. 《宝塔面板教程6》:如何修改用户名和密码
  17. kubernetes的DevOps业务(一):Jenkins,GitLab,Harbor,Tekton,GitOps
  18. Spring Boot 项目 - API 文档搜索引擎
  19. 一位期货老将的经验之谈(转)
  20. 计算机cpu 2.5ghz,电脑CPU 2.5GHZ指的是主频的速度吗,肿么判断CPU的好坏

热门文章

  1. 物化--逍遥游 庄子南华(南怀瑾老师)
  2. [CG从零开始] 6. 加载一个柴犬模型学习UV贴图
  3. 《MATLAB 入门之旅》知识点总结
  4. 100+套大数据可视化模板
  5. vue使用阿里云矢量图
  6. 上海一级计算机查成绩,上海计算机一级考试成绩查询入口
  7. 毕业两年的混社会经验:给应届生朋友们的建议【含求职经验】
  8. IDEA设置字体随鼠标滑动改变大小
  9. c语言实现乘法口诀,乘法口诀表,C语言实现
  10. 用python搭建无人车的仿真环境