2017-09-21 6 views
0

Ich versuche eine Docker-Compose-Datei für die Entwicklung einer dotcms-Site zu erstellen.DotCMS Docker MySQL 500

Ich habe folgendes in meinem 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 

nach docker-compose up

laufen Wenn ich versuche, localhost:8080 ich einen 500-Fehler erhalten zu laden. Ich schaue in die dotcms database und es gibt eine Tabelle namens db_version aber das ist alles, was es gibt. Keine anderen Tabellen werden erstellt.

Ich habe versucht, die dotcms Datenbank zu löschen und dann docker-compose up noch einmal zu starten, aber ich bekomme das gleiche Problem.

Ich habe auch versucht, die ./db Ordner (das bereitgestellte Volume für die mysql Datenbank) und rerunning, wieder das gleiche Problem.

aktualisieren

ich den dotcms Container aktualisiert auszuführen: command: sh -c "sleep 30 && /app/bin/startup.sh run"

Ich habe auch --general_log=1 --general_log_file=/var/log/mysql/query.log zum dbcommand

ich den lokalen db Ordner gelöscht und lief wieder docker-composer auf.

Immer noch die gleichen Ergebnisse. Hier sind die Protokolle:

dotcms.log: https://pastebin.com/5WnrarK8
catalina.log: https://pastebin.com/Z3vHbnp2
localhost.log: https://pastebin.com/S2CSPqxQ

vom db Behälter

mysql.error.log: https://pastebin.com/4bYwB2Z2
mysql.query.log: https://pastebin.com/maDUXFm5
(Diese Abfragedatei war sehr groß, ich entfernte alles vor th e erster Eintrag zeigt: mysql-connector-java-5.1.37

docker logs <container id>
db.container.log: https://pastebin.com/Wz7aRhVc
dotcms.container.log: https://pastebin.com/qNVBfTpf

+0

und wie ist das mit Java zusammen? –

+0

dotcms ist eine Java-Anwendung –

+0

Ist das ein Tippfehler? 'ports: - 3308: 3306'? –

Antwort

1

Ich bin kein mysql-Experte, aber das Protokoll dies legt nahe, ein MySQL-Problem ohne Bezug zu dotCMS. Die mysql.error.log zeigt, dass mysql fast sofort nach dem Start heruntergefahren wird - was bedeutet, dass es heruntergefahren wird, bevor dotCMS eine Chance hat, auf die Datenbank zuzugreifen, was dazu führt, dass die dotCMS-Abfrage fehlschlägt.

Betrachten diese Sektion der mysql.error.log (Zeilen 38-44 in Ihrem Pastebin):

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 

Es gibt so gut wie keine Zeit zwischen der [Note] mysqld: ready for connections Nachricht und der [ERROR] 1053 Server shutdown in progress Nachricht. Und die mysql-Abfrage, die in der dotcms.log-Fehlermeldung angezeigt wird, wird überhaupt nicht in der mysql.query angezeigt.log (oder zumindest in dem Teil, den du gepostet hast), was darauf hinweist, dass es nie die mysql-Datenbank erreicht hat.

Also wenn Sie nicht bereits haben, schlage ich vor, versuchen Sie mysql im Docker-Container starten, ohne dotCMS überhaupt zu starten, und überprüfen Sie die Protokolle um sicherzustellen, dass es startet und ohne Probleme bleibt. Fügen Sie dann den Startpunkt dotCMS hinzu, und wenn dies dazu führt, dass mysql Probleme hat, vergleichen Sie die mysql-Protokolle mit und ohne dotCMS, um zu sehen, was sich ändert.

Überprüfen Sie ansonsten Ihre dotCMS context.xml-Datei (in /dotserver/tomcat-8.0.18/webapps/ROOT/META-INF), um sicherzustellen, dass Sie ordnungsgemäß für den Zugriff auf die mysql-db konfiguriert sind.