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.logdb 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数据库。