2017-09-21 7 views
0

J'essaye de construire un fichier docker-composer pour le développement d'un site dotcms.DotCMS Docker MySQL 500

Je donne les résultats suivants dans mon 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 

après l'exécution docker-compose up

Lorsque je tente de charger localhost:8080 j'obtiens une erreur 500. Je regarde dans le dotcms database et il y a une table appelée db_version cependant c'est tout ce qu'il y a. Aucune autre table n'est créée.

J'ai essayé de supprimer la base de données dotcms et de recréer puis en cours d'exécution docker-compose up encore une fois, mais j'ai le même problème.

J'ai également essayé de supprimer le dossier ./db (le volume monté pour la base de données mysql) et de réexécuter, toujours le même problème.

Mise à jour

J'ai mis à jour le conteneur dotcms pour exécuter: command: sh -c "sleep 30 && /app/bin/startup.sh run"

J'ai aussi ajouté --general_log=1 --general_log_file=/var/log/mysql/query.log au dbcommand

J'ai supprimé le dossier db local et couru docker-composer à nouveau.

Toujours en obtenant les mêmes résultats. Voici les journaux:

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

du récipient db

mysql.error.log: https://pastebin.com/4bYwB2Z2
mysql.query.log: https://pastebin.com/maDUXFm5
(Ce fichier de requête était très volumineux, j'ai tout enlevé avant e première projection d'entrée: 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

et en quoi est-ce lié à java? –

+0

dotcms est une application Java –

+0

Est-ce une faute de frappe? 'ports: - 3308: 3306'? –

Répondre

1

Je ne suis pas un expert MySQL, mais le journal montre que cela est un problème de MySQL sans lien avec dotCMS. Le mysql.error.log montre que mysql se ferme presque immédiatement après son démarrage - ce qui signifie qu'il peut s'arrêter avant que dotCMS ait une chance d'accéder à la base de données, provoquant l'échec de la requête dotCMS.

Tenir compte cette partie de la mysql.error.log (lignes 38-44 dans votre 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 

Il n'y a presque pas de temps entre le message et le message [Note] mysqld: ready for connections[ERROR] 1053 Server shutdown in progress. Et la requête mysql affichée dans le message d'erreur dotcms.log ne s'affiche pas du tout dans mysql.query.log (ou au moins dans la partie que vous avez posté), indiquant qu'il n'a jamais atteint la base de données mysql. Donc, si vous ne l'avez pas déjà fait, je vous suggère de lancer mysql dans le conteneur Docker sans démarrer dotCMS, et vérifiez les logs pour vous assurer qu'il démarre et reste opérationnel sans problème. Ensuite, ajoutez le démarrage de dotCMS, et si cela cause des problèmes à mysql, comparez les logs de mysql avec et sans dotCMS pour voir ce qui change. À part cela, vérifiez votre fichier dotCMS context.xml (en /dotserver/tomcat-8.0.18/webapps/ROOT/META-INF) pour vous assurer que vous avez configuré correctement l'accès à mysql db.