docker部署nacos(mysql)

vim docker-compose.yml

version: "3.8"
services:
  nacos:
    image: nacos/nacos-server:v2.2.3
    container_name: nacos
    environment:
      - MODE=standalone
      - SPRING_DATASOURCE_PLATFORM=mysql
      - MYSQL_SERVICE_HOST=nacos-mysql
      - MYSQL_SERVICE_DB_NAME=nacos_config
      - MYSQL_SERVICE_PORT=3306
      - MYSQL_SERVICE_USER=nacos
      - MYSQL_SERVICE_PASSWORD=nacos
      - MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
      - NACOS_AUTH_ENABLE=true
      - NACOS_AUTH_IDENTITY_KEY=2222
      - NACOS_AUTH_IDENTITY_VALUE=2222
      - NACOS_AUTH_TOKEN=SecretKey243735678901234567890123456789012345678901234567890123456789
    # volumes:
    #   - ./standalone-logs/:/home/nacos/logs
    ports:
      - "8848:8848"
      - "9848:9848"
    depends_on:
      nacos-mysql:
        condition: service_healthy
    restart: always
  nacos-mysql:
    container_name: nacos-mysql
    image: mysql:8.4.2
    command:
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=123456
      - MYSQL_DATABASE=nacos_config
      - MYSQL_USER=nacos
      - MYSQL_PASSWORD=nacos
      - LANG=C.UTF-8
    ports:
      - 3308:3306
    volumes:
      - ./nacos-mysql/data:/var/lib/mysql
      - ./nacos-mysql/conf/my.cnf:/etc/mysql/conf.d/my.cnf
      - ./nacos-mysql/logs:/logs
    healthcheck:
      test: [ "CMD", "mysqladmin" ,"ping", "-h", "localhost" ]
      timeout: 45s
      interval: 10s
      retries: 3



一键部署脚本

实现逻辑:
1、先启动一个nacos临时容器,把sql初始化脚本拷贝出来
2、启动mysql
3、导入sql
4、启动nacos

#! /bin/bash
function getsql() {
    docker run -d --name tmp-nacos  nacos/nacos-server:v2.2.3 && \
    docker cp tmp-nacos:/home/nacos/conf/mysql-schema.sql ./ && \
    docker rm -f tmp-nacos
    echo "从nacos容器中获取初始化sql文件"
}

function startdb() {
    mkdir -p nacos-mysql/conf

    cat > nacos-mysql/conf/my.cnf <<EOF
###### [client]配置模块 ######
[client]
default-character-set=utf8mb4

###### [mysql]配置模块 ######
[mysql]
# 设置MySQL客户端默认字符集
default-character-set=utf8mb4


###### [mysqld]配置模块 ######
[mysqld]
port=3306
user=mysql
datadir=/var/lib/mysql
server-id = 1
# 禁用符号链接以防止各种安全风险
symbolic-links=0
# 允许最大连接数
max_connections=1000
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 0: 表名将按指定方式存储,并且比较区分大小写;
# 1: 表名以小写形式存储在磁盘上,比较不区分大小写;
lower_case_table_names=0
# 设置时区
default-time_zone='+8:00'
EOF
    echo "启动mysql......."
    docker-compose  -f standalone-mysql-8.yaml up -d nacos-mysql 
    if [[ $? -eq 0 ]];then
        sleep 30
        echo "success: mysql启动成功"
    else
        echo "ERROR: mysql启动失败"
    fi

}

function exportSql() {
    docker exec -i nacos-mysql mysql -h 127.0.0.1 -u root -p'123456' nacos_config < mysql-schema.sql 
    if [[ $? -eq 0 ]];then
        echo "success: sql导入成功"
    else
        echo "ERROR: sql导入失败"
    fi
    
    
}

function startNacos() {
    echo "启动nacos......."
    docker-compose  -f standalone-mysql-8.yaml up -d nacos
    if [[ $? -eq 0 ]];then
        echo "success: nacos启动成功"
    else
        echo "ERROR: nacos启动失败"
    fi
} 


getsql
startdb
exportSql
startNacos

你可能感兴趣的:(docker,mysql,adb)