微服务 docker-compose部署etcd

GO微服务 docker-compose部署etcd

最近在学习golang的微服务, 使用的是go-zero。微服务就会涉及到grpc和etcd,本地开发调试完成后,就计划上线,部署到腾讯云。踩坑就开始了。

踩坑开始,先说结论。

原因是腾讯云服务里的文件夹权限不够,导致docker启动成功,但连接失败。大无语,错怪了腾讯云的防火墙。

gitee新开一个etcd仓库

仓库文件整体结构如下所示。里面的.drone.yml文件可能比较陌生, 他的作用是drone的CI/CD的配置文件,.env是给doker使用的环境变量 docker-compose.yml是docker部署文件。

  • .drone.yml

  • .env

  • docker-compose.yml

.drone.yml 再次推荐CICD工具: drone

volumes的作用是调用服务器上的docker,when的tag, 是打tag进行部署。

yaml 复制代码
pipeline:
  build-dev:
    image: docker
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    commands:
      - docker-compose down
      - docker-compose build
      - docker-compose up -d
    when:
      event: tag
      branch: '*'
      ref: refs/tags/dev.*
    privileged: true

.env

ini 复制代码
ETCD_DIR=/home/ubuntu/etcd
ETCD_VERSION=latest
ETCD_PORT=2379

docker-compose.yml

最终成功版 , volumes数据卷,用于在 Docker 容器和主机之间持久化存储数据,权限不够的话, 就会访问失败。

yaml 复制代码
version: '3'

services:
  etcd1:
    container_name: etcd1
    image: bitnami/etcd:$ETCD_VERSION
    deploy:
      replicas: 1
      restart_policy:
        condition: on-failure
    environment:
      ETCD_ROOT_PASSWORD: qwerdf
    privileged: true
    volumes: 
      - $ETCD_DIR/data:/bitnami/etcd/data  <-罪魁祸首就是你,ETCD_DIR文件夹没给权限。
    ports:
      - $ETCD_PORT:2379
      - 2380:2380

部署成功后,检查docker运行状态

你看多好,docker一切正常。

开始连接,但是连接失败。

连接失败时报错,context deadline exceeded,这个报错就坑我,网上都是说网络问题。

查询一下,都说是网络问题,我就按照网络的思路,各种折腾腾讯云的端口,最后发现不是端口的问题。 是docker就没部署成功。

相关推荐
foggyprojects2 分钟前
在 DeepSeek Harness 里跑通 Foggy:从安装插件到第一次问数
后端
不甘先生17 分钟前
Go 中 type、方法与指针接收者:从 str_name.Name() 看懂 Go 的类型系统
开发语言·后端·golang
摇滚侠2 小时前
《SpringBoot 3:入门与应用实战》第 14 章 打包与部署 Spring Boot 应用打包 阅读笔记 41
spring boot·笔记·后端
阿拉斯攀登3 小时前
MQ消息积压问题排查:消费卡顿、堆积、消费速度优化
后端
阿拉斯攀登3 小时前
无人售货机库存异步更新方案:解决高并发下单库存卡顿问题
后端
阿拉斯攀登4 小时前
无人售货机MQ消息丢失、重复消费、超时异常全套兜底方案
后端
做系统的大强4 小时前
我用中文从零写了一个操作系统(下篇):从45个BUG到165个——假持久化、USB地狱与OS自举
后端
程序员老赵4 小时前
Docker 部署 Rocky Linux:轻松搭建 RHEL 兼容企业级基础镜像平台
linux·后端·docker
用户6152612132104 小时前
Java主流框架与源码:Spring Framework
后端
yume_sibai5 小时前
03-Rust 函数式编程特性(闭包 + Iterator + Option/Result + 链式调用)
开发语言·后端·rust