记一次docker-compose实践

本文详细描述了如何安装Docker,改变其存储位置,以及如何通过docker-compose管理环境和服务,包括mysql、redis、etcd和nats的基础服务及业务服务ser1的部署配置。重点强调了服务命名、卷挂载、SQL_mode调整和quic协议的使用。
摘要由CSDN通过智能技术生成


零、安装docker、docker-compose

安装并且处理好用户身份问题,默认docker是需要docker用户或者root用户才可以运行,可以把当前用户加入到docker用户组

sudo apt  install docker.io
sudo apt  install docker-compose

一、改变docker存储位置

关闭docker

sudo systemctl stop docker

创建docker的新存储位置

mkdir -p /home/user/docker

编辑/etc/docker/daemon.json文件

这个文件默认没有,需要创建

vi /etc/docker/daemon.json

写入内容

{
  "data-root": "/home/user/docker"
}

重启docker

sudo systemctl restart docker

二、接入服务

0. 背景

在同一个目录下我建立了两个yml文件,docker-compose-env.ymldocker-compose-ser.yml,其中env包含mysql、redis、etcd、nats四个基础服务,ser中是业务服务。分两个文件可以保证升级服务的时候,不干扰环境。

1.docker-compose-env.yml

# yaml 配置
version: "3.7"
services:
  mysql-ser:
    image: "mysql:5.7.39"
    ports:
      - "3306:3306"
    command: "--defaults-file=/etc/mysql/my.cnf --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci"
    environment:
      - TZ=Asia/Shanghai
      - MYSQL_ROOT_PASSWORD=123456
      - MYSQL_DATABASE=ser1
      - MYSQL_PASSWORD=123456
    volumes:
      - ./mysql/log:/var/log/mysql
      - ./mysql/data:/var/lib/mysql
      - ./mysql/conf/my.cnf:/etc/mysql/my.cnf
    privileged: true

以mysql为例,将mysql服务命名为mysql-ser,挂载卷保证数据不丢。

1.1 mysql-sql_mode调整

修改my.cnf
确保该文件权限为644,如果具有全局可写权限,那么会忽略该文件,导致sql_mode不生效。

2.docker-compose-ser.yml

# yaml 配置
version: "3.7"
services:  
  ser1:
    image: "ser1:version1"
    volumes:
      - ./log:/var/log
      - ./conf:/etc/ser
      - /var/lib/dbus/machine-id:/var/lib/dbus/machine-id
      - ./conf/machine-id:/etc/machine-id
    ports:
      - "8080:8080"
      - "8001:8001/udp"
    environment:
      - TZ=Asia/Shanghai
    

业务中最重要的一个点是服务使用了quic协议,quic是基于udp的,所以对应的端口映射要标注udp。

conf

业务的conf文件

[database]
type = mysql
host = mysql-ser
port = 3306
database = ser1
user = root
password = 123456
timezone = Asia/Shanghai
max_open_conns = 100
max_idle_conns = 10
debug = false

这里最重要的是,host不能写localhost,需要写mysql-ser,也就是env.yml中的mysql服务名。


总结

记录了一次docker-compose实践。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值