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 к dbcommand

Я удалил местный 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, связанных с сопоставлением или регистром имен таблиц.

большое спасибо

Другие вопросы по тегам