文章目录
- 项目场景
- 问题1
- 问题描述
- 原因分析
- 解决方案
- 问题2
- 问题描述
- 原因分析
- 解决方案
- 参考文章
项目场景
项目场景:Docker部署常见应用之企业级堡垒机JumpServer
问题1
问题描述
docker-compose.yml
中使用$SECRET_KEY
和$BOOTSTRAP_TOKEN
加载~/.bashrc
环境变量时无法加载- 代码中写法:
version: '3' services: ...... jms_all: image: jumpserver/jms_all:v3.10.10 container_name: jms_all ports: - "80:80" - "2222:2222" environment: SECRET_KEY: $SECRET_KEY BOOTSTRAP_TOKEN: $BOOTSTRAP_TOKEN LOG_LEVEL: ERROR DB_HOST: jms_mysql DB_PORT: 3306 DB_USER: jumpserver DB_PASSWORD: 123456 DB_NAME: jumpserver
原因分析
- 命令行使用
echo $SECRET_KEY
可以打印环境变量,docker-compose.yml 无法加载原因不明
。
解决方案
- 直接使用
bashrc
中定义的SECRET_KEY
和BOOTSTRAP_TOKEN
的值, 如下version: '3' services: ...... jms_all: image: jumpserver/jms_all:v3.10.10 container_name: jms_all ports: - "80:80" - "2222:2222" environment: SECRET_KEY: 0vwLw0vfmIf1NsjkrgxXJoA0HyXB7QajWIHVpPQVsdxa9ydUkg BOOTSTRAP_TOKEN: V9BXZzUzlG2UYLOu LOG_LEVEL: ERROR DB_HOST: jms_mysql DB_PORT: 3306 DB_USER: jumpserver DB_PASSWORD: 123456 DB_NAME: jumpserver
问题2
问题描述
jumpserver
启动后可以访问登录页面, 登录后提示服务器错误Server error occur, contact administrator
原因分析
jumpserver
第一次启动时候会初始化数据库, 由于数据库编码默认为latin1
, 会导致中文出错, 需要修改编码为utf8
, 通过配置文件挂载的方式修改后, 发现仍然报错,挂载配置失败。sudo docker-compose logs jms_all
查看jms_all
的启动日志, 中文编码出错jms_all | After migration, update builtin role permissions jms_all | - Update builtin roles jms_all | 2024-06-08 23:32:37 Install builtin applets jms_all | (1366, "Incorrect string value: '\\xE6\\xB5\\x8F\\xE8\\xA7\\x88...' for column 'display_name' at row 1") jms_all | (1366, "Incorrect string value: '\\xE7\\xA4\\xBE\\xE5\\x8C\\xBA...' for column 'display_name' at row 1")
sudo docker-compose logs mysql
查看mysql
启动日志, 发现配置文件没有加载mysqld: [Warning] World-writable config file '/etc/mysql/conf.d/my.cnf' is ignored.
- 进入
mysql
容器进行检查- 使用命令
# 进入容器 sudo docker exec -it jms_mysql bash # 进入数据库 mysql -uroot -p123456 # 选择jumpserver数据库 use jumpserver # 查看数据库使用的编码集 SHOW VARIABLES LIKE 'character_set%'; SHOW VARIABLES LIKE 'collation%';
- 得到结果显示编码仍为
latin
# SHOW VARIABLES LIKE 'character_set%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ # SHOW VARIABLES LIKE 'collation%'; +----------------------+-------------------+ | Variable_name | Value | +----------------------+-------------------+ | collation_connection | latin1_swedish_ci | | collation_database | latin1_swedish_ci | | collation_server | latin1_swedish_ci | +----------------------+-------------------+
- 使用命令
解决方案
- 修改配置文件的权限
cd /data/docker/jumpserver/mysql/conf/ sudo chmod 644 my.cnf
- 重新启动
# 停止容器 sudo docker-compose down # 删除mysql数据文件 sudo rm -rf /data/docker/jumpserver/mysql/data/* # 重启容器 sudo docker-compose up -d
参考文章
Windows环境docker安装MySQL挂载配置不生效问题处理