当前位置:   article > 正文

Docker 部署微服务项目_docker部署微服务项目

docker部署微服务项目

目录

 一、前言

二、环境准备

1、安装 Docker

2、Docker 安装 MySQL

3、Docker 安装 Redis

4、Docker 安装 Nacos

5、Docker 安装 Nginx

三、部署后端服务

四、部署前端服务

感谢观看!! 


 一、前言

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

二、环境准备

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

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

1、安装 Docker

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

  1. sudo yum remove docker \
  2. docker-client \
  3. docker-client-latest \
  4. docker-common \
  5. docker-latest \
  6. docker-latest-logrotate \
  7. docker-logrotate \
  8. 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

  1. # 查看docker的版本信息
  2. docker version
  3. # 启动docker
  4. systemctl start docker
  5. # 查看docker是否启动
  6. ps -ef | grep docker
  7. # 设置docker开机自启动
  8. systemctl enable docker

 7、安装 Docker-compose

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

  1. curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  2. # 赋予权限
  3. chmod +x /usr/local/bin/docker-compose
  4. # 查看版本
  5. 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
  1. [client]
  2. default-character-set=utf8
  3. [mysql]
  4. default-character-set=utf8
  5. [mysqld]
  6. init_connect='SET collation_connection = utf8_unicode_ci'
  7. init_connect='SET NAMES utf8'
  8. character-set-server=utf8
  9. collation-server=utf8_unicode_ci
  10. skip-character-set-client-handshake
  11. skip-name-resolve

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

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

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

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

3、Docker 安装 Redis

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

  1. mkdir -p /mydata/redis/conf
  2. vi /mydata/redis/conf/redis.conf
  1. # bind 192.168.1.100 10.0.0.1
  2. # bind 127.0.0.1 ::1
  3. #bind 127.0.0.1
  4. protected-mode no
  5. port 6379
  6. tcp-backlog 511
  7. timeout 0
  8. tcp-keepalive 300
  9. daemonize no
  10. supervised no
  11. pidfile /var/run/redis_6379.pid
  12. loglevel notice
  13. logfile ""
  14. always-show-logo yes
  15. save 900 1
  16. save 300 10
  17. save 60 10000
  18. stop-writes-on-bgsave-error yes
  19. rdbcompression yes
  20. rdbchecksum yes
  21. dbfilename dump.rdb
  22. dir ./
  23. replica-serve-stale-data yes
  24. replica-read-only yes
  25. repl-diskless-sync no
  26. repl-disable-tcp-nodelay no
  27. replica-priority 100
  28. lazyfree-lazy-eviction no
  29. lazyfree-lazy-expire no
  30. lazyfree-lazy-server-del no
  31. replica-lazy-flush no
  32. appendonly yes
  33. appendfilename "appendonly.aof"
  34. no-appendfsync-on-rewrite no
  35. auto-aof-rewrite-percentage 100
  36. auto-aof-rewrite-min-size 64mb
  37. aof-load-truncated yes
  38. aof-use-rdb-preamble yes
  39. lua-time-limit 5000
  40. slowlog-max-len 128
  41. notify-keyspace-events ""
  42. hash-max-ziplist-entries 512
  43. hash-max-ziplist-value 64
  44. list-max-ziplist-size -2
  45. list-compress-depth 0
  46. set-max-intset-entries 512
  47. zset-max-ziplist-entries 128
  48. zset-max-ziplist-value 64
  49. hll-sparse-max-bytes 3000
  50. stream-node-max-bytes 4096
  51. stream-node-max-entries 100
  52. activerehashing yes
  53. hz 10
  54. dynamic-hz yes
  55. aof-rewrite-incremental-fsync yes
  56. rdb-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

  1. mkdir /mydata/nginx/
  2. cd /mydata/nginx
  3. docker container cp nginx:/etc/nginx .
  4. mv nginx/ conf

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

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

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


三、部署后端服务

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

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

  1. <build>
  2. <plugins>
  3. <plugin>
  4. <groupId>org.springframework.boot</groupId>
  5. <artifactId>spring-boot-maven-plugin</artifactId>
  6. </plugin>
  7. </plugins>
  8. </build>

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

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

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

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

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

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

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

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

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

4、编写  docker-compose.yaml

  1. version: "3.8"
  2. networks:
  3. edu:
  4. services:
  5. # 定义服务名字,只要不冲突即可
  6. gateway:
  7. # 镜像名字
  8. image: gateway:1.0
  9. # 自定义容器名字
  10. container_name: gateway
  11. ports:
  12. - "8222:8222"
  13. # 网络模式
  14. networks:
  15. - edu
  16. service_acl:
  17. image: service_acl:1.0
  18. container_name: service_acl
  19. ports:
  20. - "8009:8009"
  21. networks:
  22. - edu
  23. service_cms:
  24. image: service_cms:1.0
  25. container_name: service_cms
  26. ports:
  27. - "8004:8004"
  28. networks:
  29. - edu
  30. service_edu:
  31. image: service_edu:1.0
  32. container_name: service_edu
  33. ports:
  34. - "8001:8001"
  35. networks:
  36. - edu
  37. service_msm:
  38. image: service_msm:1.0
  39. container_name: service_msm
  40. ports:
  41. - "8006:8006"
  42. networks:
  43. - edu
  44. service_order:
  45. image: service_order:1.0
  46. container_name: service_order
  47. ports:
  48. - "8007:8007"
  49. networks:
  50. - edu
  51. service_oss:
  52. image: service_oss:1.0
  53. container_name: service_oss
  54. ports:
  55. - "8002:8002"
  56. networks:
  57. - edu
  58. service_statistics:
  59. image: service_oss:1.0
  60. container_name: service_statistics
  61. ports:
  62. - "8008:8008"
  63. networks:
  64. - edu
  65. service_ucenter:
  66. image: service_ucenter:1.0
  67. container_name: service_ucenter
  68. ports:
  69. - "8160:8160"
  70. networks:
  71. - edu
  72. service_vod:
  73. image: service_vod:1.0
  74. container_name: service_vod
  75. ports:
  76. - "8003:8003"
  77. networks:
  78. - edud

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

5、编排容器

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

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

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

四、部署前端服务

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

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

感谢观看!! 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/160408
推荐阅读
相关标签
  

闽ICP备14008679号