cicd环境推mysql问题汇总

最终流程说明:

1. dockerfile: 

 1 FROM founder/mysql:5.7
 2 COPY my.cnf /etc/mysql/conf.d/my.cnf
 3 #ADD 1database.sql /docker-entrypoint-initdb.d/1database.sql
 4 
 5 ADD 2pkubaseentity.sql /home/
 6 ADD 3pkubasetriple.sql /home/
 7 COPY start.sh /docker-entrypoint-initdb.d/
 8 RUN chmod a+x /docker-entrypoint-initdb.d/start.sh
 9 
10 #ADD 2wisekg.sql /docker-entrypoint-initdb.d/2wisekg.sql
View Code

2. start.sh

#!/bin/bash
mysql -uroot -p?? -e "CREATE DATABASE wisekg DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci;"
mysql -uroot -pasdf -e "use wisekg;source /home/2pkubaseentity.sql;"
mysql -uroot -pagad -e "use wisekg;source /home/3pkubasetriple.sql;"
View Code

3. docker-compose

 1 version: '2'
 2 
 3 services:
 4   db:
 5     image: founder/nlpmysql:${DOCKER_TAG}
 6     restart: always
 7     environment:
 8       MYSQL_ROOT_PASSWORD:
 9       MYSQL_DATABASE:
10       MYSQL_USER:
11       MYSQL_PASSWORD:
12       MYSQL_ALLOW_EMPTY_PASSWORD:
13     ports:
14       - '3306:3306'
15     labels:
16       io.rancher.container.hostname_override: 'container_name'
17       io.rancher.scheduler.affinity:host_label: aimysql=true
18     volumes:
19       - nlp_mysql_data:/var/lib/mysql
20 
21 volumes:
22   nlp_mysql_data:
23     driver: ${VOLUME_DRIVER}
View Code

4. rancher-compose:

 1 version: '2'
 2 
 3 catalog:
 4   name: Mysql
 5   version: 5.7.0
 6   description: 方正电子 Mysql 公共镜像
 7   category: 数据库
 8   uuid: mysql
 9   questions:
10     - variable: "MYSQL_DATABASE"
11       label: "数据库名:"
12       required: false
13       default: "test"
14       type: "string"
15     - variable: "MYSQL_ROOT_PASSWORD"
16       label: "Root用户密码:"
17       required: true
18       default: "Founder123"
19       type: "password"
20     - variable: "MYSQL_USER"
21       label: "普通用户名:"
22       required: false
23       default: "founder"
24       type: "string"
25     - variable: "MYSQL_PASSWORD"
26       label: "普通用户密码:"
27       required: false
28       default: "Founder123"
29       type: "password"
30     - variable: "MYSQL_ALLOW_EMPTY_PASSWORD"
31       label: "是否允许密码为空:"
32       required: false
33       default: "no"
34       type: "enum"
35       options:
36         - "yes"
37         - "no"
38     - variable: "VOLUME_DRIVER"
39       label: "存储卷驱动:"
40       description: "选择存储卷驱动类型"
41       required: true
42       default: "rancher-nfs"
43       type: "enum"
44       options:
45         - "rancher-nfs"
46         - "local"
47 
48 services:
49   db:
50     scale: 1
51     start_on_create: true
52     health_check:
53       healthy_threshold: 2
54       response_timeout: 2000
55       port: 3306
56       unhealthy_threshold: 3
57       interval: 2000
58       strategy: recreate
59       initializing_timeout: 6000000
60       reinitializing_timeout: 6000000
View Code

5. my.cnf

 1 [mysqld]
 2 character-set-server=utf8mb4
 3 collation-server=utf8mb4_unicode_ci
 4 max_allowed_packet=200M
 5 max_connections=1000
 6 connect_timeout=60
 7 lower_case_table_names=1
 8 innodb_buffer_pool_instances=8
 9 innodb_buffer_pool_size = 1G
10 innodb_page_cleaners=8
11 [client]
12 default-character-set=utf8mb4
13 
14 [mysql]
15 default-character-set=utf8mb4
View Code

问题汇总;

1.

 不能把start.sh运行,放到initdb下让他自己运行。

2. 每次重新部署的时候,一定要把之前栈里的服务给删掉,要不然重新部署的时候start.sh不生效。(流程见第3点)

 

3. 为什么数据不全。

当设置初始化时间6000s时候,发现服务启动成功,但是初始化数据不全。

其实他的流程是这样的:  先初始化mysql,和数据,6000s过后,数据没加载全,那么重新初始化,结果第二次初始化的时候db这个服务名是存在的,所以就没有进行start.sh。导致直接启动了mysql。然后正常running,导致了我们所现在看到了running但是数据不全的场景。

原文地址:https://www.cnblogs.com/dhName/p/12970930.html