我正在尝试为一个dotcms站点的开发构建一个docker-compose文件。
我的docker-compose.yml中有以下内容:
version: "3"
services:
dotcms:
image: openjdk
command: /app/bin/startup.sh run
ports:
- 8080:8080
volumes:
- ./:/app
depends_on:
- db
db:
image: mysql
command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci --init-connect='SET NAMES UTF8;' --innodb-flush-log-at-trx-commit=0 --lower_case_table_names=1
volumes:
- ./db:/var/lib/mysql
ports:
- 3308:3306
environment:
MYSQL_ROOT_PASSWORD: dotcms
MYSQL_DATABASE: dotcms
MYSQL_USER: dotcms
MYSQL_PASSWORD: dotcms在运行docker-compose up之后
当我试图加载localhost:8080时,我得到了一个500错误。我在dotcms database中查找,有一个名为db_version的表,但这就是所有的表。不会创建其他表。
我尝试删除dotcms数据库并重新创建,然后再次运行docker-compose up,但我得到了相同的问题。
我还尝试删除./db文件夹( mysql数据库的挂载卷),然后重新运行,同样也出现了同样的问题。
更新
我已经将dotcms容器更新为运行:command: sh -c "sleep 30 && /app/bin/startup.sh run"
我还向db command添加了--general_log=1 --general_log_file=/var/log/mysql/query.log
我删除了本地的db文件夹,并再次运行docker-composer。
仍然得到相同的结果。以下是日志:
dotcms.log:https://pastebin.com/5WnrarK8
catalina.log:https://pastebin.com/Z3vHbnp2
localhost.log:https://pastebin.com/S2CSPqxQ
从db容器
mysql.error.log:https://pastebin.com/4bYwB2Z2
mysql.query.log:https://pastebin.com/maDUXFm5
(这个查询文件非常大,我删除了第一个条目之前的所有内容,显示:mysql-connector-java-5.1.37
docker logs <container id>
db.container.log:https://pastebin.com/Wz7aRhVc
dotcms.container.log:https://pastebin.com/qNVBfTpf
发布于 2017-09-23 01:13:50
我不是mysql专家,但日志显示这是一个与dotCMS无关的mysql问题。mysql.error.log显示mysql在启动后几乎立即关闭-这意味着它可能在dotCMS有机会访问数据库之前就关闭了,从而导致dotCMS查询失败。
考虑mysql.error.log的这一部分(粘贴箱中的第38-44行):
2017-09-19T08:13:37.664410Z 0 [Note] mysqld: ready for connections.
Version: '5.7.19' socket: '/tmp/tmp.Dlc2I8QgCt/mysqld.sock' port: 3306 MySQL Community Server (GPL)
2017-09-19T08:13:37.664422Z 0 [Note] Executing 'SELECT * FROM INFORMATION_SCHEMA.TABLES;' to get a list of tables using the deprecated partition engine. You may use the startup option '--disable-partition-engine-check' to skip this check.
2017-09-19T08:13:37.664430Z 0 [Note] Beginning of list of non-natively partitioned tables
2017-09-19T08:13:37.664491Z 0 [Note] Giving 1 client threads a chance to die gracefully
2017-09-19T08:13:37.664553Z 0 [Note] Shutting down slave threads
2017-09-19T08:13:37.664684Z 3 [ERROR] 1053 Server shutdown in progress在[Note] mysqld: ready for connections消息和[ERROR] 1053 Server shutdown in progress消息之间几乎没有时间。dotcms.log错误消息中显示的mysql查询根本没有显示在mysql.query.log中(或者至少在您发布的部分中),这表明它从未到达mysql数据库。
因此,如果你还没有,我建议你尝试在Docker容器中启动mysql,而不是启动dotCMS,并检查日志以确保它启动并保持没有问题。然后添加dotCMS启动,如果这会导致mysql出现问题,请比较使用和不使用dotCMS的mysql日志,看看发生了什么变化。
除此之外,请仔细检查您的dotCMS context.xml文件(在/dotserver/tomcat-8.0.18/webapps/ROOT/META-INF中),以确保您已正确配置以访问mysql。
发布于 2020-01-23 03:08:12
我正面临着一个不同的错误,但你的参数让我很开心
command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci --init-connect='SET NAMES UTF8;' --innodb-flush-log-at-trx-commit=0 --lower_case_table_names=1我正在尝试dockerized化的mysql (5.6,5.7,5.7.29,等等)但是SQL初始化总是失败,因为SQL错误可能与排序规则或表名的大小写有关。
非常感谢
https://stackoverflow.com/questions/46334195
复制相似问题