首页 > 其他分享 >DockerCompose安装和部署微服务项目(个人笔记)

DockerCompose安装和部署微服务项目(个人笔记)

时间:2023-02-02 15:55:17浏览次数:53  
标签:compose DockerCompose 服务项目 nacos 笔记 registry mysql 镜像 docker

DockerCompose安装和部署微服务项目
1.安装DockerCompose
1.1 下载
1.2 修改文件权限
修改好每个服务模块的yml
整个cloud-demo文件夹上传到服务器某个文件夹
docker和docker-compose同时在使用的坑(可能会有)
docker-compose常用名命令
搭建个人私有仓库
Docker镜像仓库
简化版镜像仓库
带有图形化界面版本
配置Docker信任地址
构建运行
打包上传镜像
1.安装DockerCompose
1.请确保已经安装docker-ce,可参考上一篇博客docker的安装和试用

2.日常部署多个服务的项目时,单体部署较为繁琐,引入docker-compose可以解决这一痛点

1.1 下载
Linux下需要通过命令下载:

# 安装
curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
1
2
如果下载速度较慢,或者下载失败,可以使用我提供的docker-compose文件:

链接:https://pan.baidu.com/s/19x1zLRdCn4apJpiReNJY_g?pwd=f7rc
提取码:f7rc

把docker-compose上传到/usr/local/bin/

1.2 修改文件权限
# 修改权限
chmod +x /usr/local/bin/docker-compose
1
2
如果这里出现错误,需要修改自己的hosts文件:

echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts
1
查看是否安装完成

docker-compose --version
1
目录结构

每个微服务模块文件夹又分别有一个Dockerfile文件和一个jar包

主要的docker-compose.yml的配置文件

version: "3.2"

services:
nacos:
image: nacos/nacos-server:1.4.1
environment:
MODE: standalone
ports:
- "8848:8848"
mysql:
image: mysql:5.7.25
environment:
MYSQL_ROOT_PASSWORD: 123456
volumes:
- "$PWD/mysql/data:/var/lib/mysql"
- "$PWD/mysql/conf:/etc/mysql/conf.d/"
userservice:
build: ./user-service
orderservice:
build: ./order-service
gateway:
build: ./gateway
ports:
- "10010:10010"

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
项目里可以直接用docker-compose的服务名作为连接位置
例如boostrap.yml连接nacos

spring:
application:
name: userservice # 服务名称
profiles:
active: dev #开发环境,这里是dev
cloud:
nacos:
# server-addr: localhost:8848 # Nacos地址
# server-addr: localhost:80 # nginx来反向代理到nacos集群的节点
# server-addr: 120.56.22.33:80 # nacos配置文件来源
server-addr: nacos:8848 # docker-compose的服务名nacos直接来访问

config:
file-extension: yaml # 文件后缀名
1
2
3
4
5
6
7
8
9
10
11
12
13
14
例如userservice.yml连接mysql

server:
port: 8081
#spring:
# application:
# name: userservice #服务名称
# cloud:
# nacos:
# server-addr: 112.74.85.162:18848 #nacos服务地址
# discovery:
## namespace: 0bf0b8e7-6e5f-472e-abd0-9a0b554d76d3 #命名空间dev环境
## cluster-name: HZ #集群的形成,这里的HZ代指杭州
# cluster-name: SH #集群的形成,这里的SH代指上海
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
# url: jdbc:mysql://120.56.22.33:3311/cloud-user?serverTimezone=GMT%2B8
url: jdbc:mysql://mysql:3306/cloud-user?serverTimezone=GMT%2B8 #直接试用docker-compose的服务名
username: root
password: 123456
mybatis:
type-aliases-package: cn.itcast.user.pojo
configuration:
map-underscore-to-camel-case: true
logging:
level:
cn.itcast: debug
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
修改好每个服务模块的yml
并设置打包名称为app.jar

<dependencies>
</dependencies>
<build>
<!-- 打包后的名称,***.jar-->
<finalName>app</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.3.9.RELEASE</version>
</plugin>
</plugins>
</build>
1
2
3
4
5
6
7
8
9
10
11
12
13
然后在父项目的pom管理打包就会每个模块分别打包

整个cloud-demo文件夹上传到服务器某个文件夹
去到docker-compose.yml所在的目录


#打包执行
docker-compose up -d


#查看日志
docker-compose logs -f


#有可能nacos还没启动其他的先运行,所以报错
#可以重启其他几个服务模块
docker-compose restart gateway userservice orserservice

1
2
3
4
5
6
7
8
9
10
11
12
13
docker和docker-compose同时在使用的坑(可能会有)
比如docker部署了es,又使用docker-compose部署一个es集群,就会发生所有docker容器,外网都无法访问
猜测是加个docker网络导致的

#重启docker
service docker restart

#再重启docker-compose的服务
#去到docker-compose.yml所在目录
docker-compose restart

#接着在一个一个重启原来纯docker部署的即可解决
1
2
3
4
5
6
7
8
docker-compose常用名命令
docker-compose stop :docker-compose stop命令将停止运行的容器,但不会删除它们。

docker-compose down: docker-compose down命令将停止运行的容器,并且会删除已停止的容器以及已创建的所有网络。 我们可以down进一步迈出第一步,并添加-v标记以删除所有卷。这对于通过运行在环境中进行完全重置非常有用docker-compose down -v。

docker-compose start : docker-compose start启动所有服务

docker-compose restart : docker-compose erstart重启启所有服务

搭建个人私有仓库
Docker镜像仓库
搭建镜像仓库可以基于Docker官方提供的DockerRegistry来实现。

官网地址:https://hub.docker.com/_/registry

简化版镜像仓库
Docker官方的Docker Registry是一个基础版本的Docker镜像仓库,具备仓库管理的完整功能,但是没有图形化界面。

搭建方式比较简单,命令如下:

docker run -d \
--restart=always \
--name registry \
-p 5000:5000 \
-v registry-data:/var/lib/registry \
registry
1
2
3
4
5
6
命令中挂载了一个数据卷registry-data到容器内的/var/lib/registry 目录,这是私有镜像库存放数据的目录。

访问http://YourIp:5000/v2/_catalog 可以查看当前私有镜像服务中包含的镜像

带有图形化界面版本
使用DockerCompose部署带有图象界面的DockerRegistry,命令如下:

version: '3.0'
services:
registry:
image: registry
volumes:
- ./registry-data:/var/lib/registry
ui:
image: joxit/docker-registry-ui:static
ports:
- 8080:80
environment:
# 如果不支持中文,
- REGISTRY_TITLE=我的私有仓库
- REGISTRY_URL=http://registry:5000
depends_on:
- registry
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
配置Docker信任地址
我们的私服采用的是http协议,默认不被Docker信任,所以需要做一个配置:

# 打开要修改的文件
vi /etc/docker/daemon.json
# 添加内容:
原有内容前面一行要加逗号哦,
"insecure-registries":["http://192.168.150.101:6660"]
# 重新加载
systemctl daemon-reload
# 重启docker
systemctl restart docker
1
2
3
4
5
6
7
8
9
构建运行
#创建一个目录来存放该项目吧
mkdir -p /docker/registry-ui
cd /docker/registry-ui

#创建yml文件
touch docker-compose.yml

#把yml内容复制粘贴

#运行
docker-compose up -d
1
2
3
4
5
6
7
8
9
10
11
此时输入:192.168.150.101:6660

 

打包上传镜像
查看镜像
docker images
1
2
推送镜像到私有镜像服务必须先tag,步骤如下:
1.重新tag本地镜像,名称前缀为私有仓库的地址:192.168.150.101:6660/

#原tag ---->要推送的tag
docker tag nginx:latest 192.168.150.101:6660/nginx:1.0
1
2
2.推送镜像

docker push 192.168.150.101:6660/nginx:1.0
1
3.拉取镜像

docker pull 192.168.150.101:6660/nginx:1.0
————————————————
版权声明:本文为CSDN博主「九分柠」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43961117/article/details/126117295

标签:compose,DockerCompose,服务项目,nacos,笔记,registry,mysql,镜像,docker
From: https://www.cnblogs.com/gaoyanbing/p/17086285.html

相关文章

  • 《Vue.js 设计与实现》读书笔记 - 第7章、渲染器的设计
    第7章、渲染器的设计7.1渲染器与响应系统的结合渲染器需要有跨平台的能力。在浏览器端会渲染为真实的DOM元素。const{effect,ref}=VueReactivity//VueRea......
  • 【笔记向】package.json main 作用
    package.jsonmain作用在package.json文件中,"main"字段指定了这个包在被其他包依赖时,入口文件的文件名。例如,如果在package.json中的"main"字段被设置为"index.......
  • (笔记)ntpd与ntpdate的区别
     一、ntp和ntpdate区别①两个服务都是centos自带的(centos7中不自带ntp)。ntp的安装包名是ntp;ntpdate的安装包是ntpdate。他们并非由一个安装包提供。②ntp守护进程为ntpd,......
  • (笔记)NTP使用常见问题记录
     一、ntpd&ntpdate  我的两台虚拟机,使用135作为ntp服务器,138以135为准同步时间。version:4.2.6p5ntpd服务是按照一定时间来同步,而ntpdate是立即同步,但是二者都......
  • Python 虚拟环境 virtualenv 笔记
    初始化virtualenv方式一:virtualenv安装virtualenv,不用sudo的话,是安装到用户home目录下pipinstallvirtualenv#此时如果virtualenv命令还不能用,需要执行......
  • Minecraft 兴趣开发 | 指令笔记
    运行之后会自动创建一个名字为namespace的存储空间,存入:a:1b /datamergestorageminecraft:namespace{a:1b}  创建挖掘榜计分板,id是dig,显示名称是'ABC挖掘榜'......
  • 报错解决记录笔记
    1.2023-2-2启动程序,提示某个类版本不对,应为55.0,实际为52.0解决:首先,右键项目-打开模块设置-设置所有模块的"源"和"依赖"的jdk版本与项目使用的一致;另外打开,......
  • 机器学习-白板推导-系列(三)笔记:线性回归最小二乘法与正则化岭回归
    文章目录​​0笔记说明​​​​1最小二乘法求线性回归模型​​​​2几何意义​​​​2.1平方损失函数的几何意义​​​​2.2用几何意义求线性回归模型​​​​3从概率......
  • PostgreSQL学习笔记-7.基础知识:子查询、自增、PRIVILEGES 权限
    子查询子查询或称为内部查询、嵌套查询,指的是在PostgreSQL查询中的WHERE子句中嵌入查询语句。一个SELECT语句的查询结果能够作为另一个语句的输入值。子查询可以与......
  • 做题笔记:洛谷P8966
    考场没做出来。赛后看了讲解PPT,补了,是一道很妙的题,所以来写一篇笔记。尝试过交题解,但不给过,又见题解区已经有一篇非常好的非官方题解,个人也感觉写的太草也太抽象,达不到题......