DotCMS Docker MySQL 500
Я пытаюсь создать файл docker-compose для разработки сайта dotcms.
У меня есть следующее в моем 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"
Я также добавил --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
1 ответ
Я не эксперт по MySQL, но журнал предполагает, что это проблема MySQL, не связанная с dotCMS. 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
сообщение. И запрос mysql, показанный в сообщении об ошибке dotcms.log, вообще не отображается в mysql.query.log (или, по крайней мере, в той части, которую вы опубликовали), указывая на то, что он никогда не достиг базы данных mysql.
Поэтому, если вы этого еще не сделали, я предлагаю вам попробовать запустить mysql в контейнере Docker без запуска dotCMS и проверить журналы, чтобы убедиться, что он запускается и работает без проблем. Затем добавьте запуск dotCMS, и, если это вызывает проблемы с mysql, сравните журналы mysql с и без dotCMS, чтобы увидеть, что изменится.
Помимо этого, дважды проверьте файл dotCMS context.xml (в /dotserver/tomcat-8.0.18/webapps/ROOT/META-INF
), чтобы убедиться, что вы правильно настроили доступ к базе данных 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
Я пытался докеризовать mysql (5.6, 5.7, 5.7.29 и т. Д.), Но инициализация SQL всегда терпела неудачу из-за возможных ошибок SQL, связанных с сопоставлением или регистром имен таблиц.
большое спасибо