DotCMSdockerMySQL 500
我正在尝试构build一个用于开发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
的表,但是这是所有的。 没有其他表格被创build。
我已经尝试删除dotcms
数据库,然后再次运行dotcms
docker-compose up
重新创build,但我得到同样的问题。
我也尝试删除./db
文件夹(为mysql
数据库装入的卷)并重新运行,同样的问题。
更新
我已经更新了dotcms
容器来运行: command: sh -c "sleep 30 && /app/bin/startup.sh run"
我还添加了--general_log=1 --general_log_file=/var/log/mysql/query.log
到db
command
我删除了本地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
我不是一个MySQL专家,但日志表明这是一个MySQL问题与dotCMS无关。 mysql.error.log
显示mysql在启动后几乎立即closures – 意味着在dotCMS有机会访问数据库之前可能会closuresmysql,导致dotCMS查询失败。
考虑一下mysql.error.log
这一部分(pastebin中的第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中(或者至less在你发布的部分中),表明它永远不会到达mysql数据库。
所以,如果你还没有,我build议你尝试在Docker容器中启动mysql而不启动dotCMS,并检查日志以确保启动并保持正常运行。 然后添加dotCMS启动,如果这导致mysql有问题,比较mysql日志与没有dotCMS,看看有什么变化。
除此之外,请仔细检查您的dotCMS context.xml文件(位于/dotserver/tomcat-8.0.18/webapps/ROOT/META-INF
),以确保您已正确configuration以访问MySQL数据库。