目录
一、前言
二、环境准备
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.1
protected-mode no
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize no
supervised no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile ""
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir ./
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-disable-tcp-nodelay no
replica-priority 100
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
appendonly yes
appendfilename "appendonly.aof"
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000
slowlog-max-len 128
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
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
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: gateway
ports:
- "8222:8222"
# 网络模式
networks:
- edu
service_acl:
image: service_acl:1.0
container_name: service_acl
ports:
- "8009:8009"
networks:
- edu
service_cms:
image: service_cms:1.0
container_name: service_cms
ports:
- "8004:8004"
networks:
- edu
service_edu:
image: service_edu:1.0
container_name: service_edu
ports:
- "8001:8001"
networks:
- edu
service_msm:
image: service_msm:1.0
container_name: service_msm
ports:
- "8006:8006"
networks:
- edu
service_order:
image: service_order:1.0
container_name: service_order
ports:
- "8007:8007"
networks:
- edu
service_oss:
image: service_oss:1.0
container_name: service_oss
ports:
- "8002:8002"
networks:
- edu
service_statistics:
image: service_oss:1.0
container_name: service_statistics
ports:
- "8008:8008"
networks:
- edu
service_ucenter:
image: service_ucenter:1.0
container_name: service_ucenter
ports:
- "8160:8160"
networks:
- edu
service_vod:
image: service_vod:1.0
container_name: service_vod
ports:
- "8003:8003"
networks:
- edud
将 docker-compose.yaml 上传到 服务器中
5、编排容器
# 编排前可检查一下配置文件,如果没有任何东西输出就没有问题
docker-compose config -q
# 编排
docker-compose up
到这里后端服务就已经部署完毕
docker logs 容器名 可以通过查看容器日志的方式来调试
四、部署前端服务
前端的部署直接参考这篇博客: 文章来源:https://www.toymoban.com/news/detail-459916.html
谷粒学苑 Vue +NUXT +SpringCloud 部署到服务器_我不是秃神的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-459916.html
感谢观看!!
到了这里,关于Docker 部署微服务项目的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!