Estoy tratando de configurar Mura CMS usando Docker en mi máquina local. La base de datos MYSQL parece no funcionar.
Estoy usando el comando docker-compose up . He estado probando el siguiente ejemplo: https://github.com/blueriver/docker-muracms/tree/master/examples/blueriver-muracms-mysql
version: '3.3' services: muracms: image: blueriver/muracms:latest depends_on: - svc_muradb environment: MURA_ADMIN_USERNAME: admin MURA_ADMIN_PASSWORD: 5trongP@55w0rd MURA_ADMINEMAIL: youremail@domain.com MURA_APPRELOADKEY: appreload MURA_DATASOURCE: dsn_muracms MURA_DATABASE: muradb MURA_DBTYPE: mysql MURA_DBUSERNAME: root MURA_DBPASSWORD: 5trongP@55w0rd MURA_DBHOST: svc_muradb MURA_DBPORT: 3306 MURA_SITEIDINURLS: "false" MURA_INDEXFILEINURLS: "true" MURA_TESTBOX: "true" MURA_USESSL: "false" volumes: - ./www/modules:/var/www/modules - ./www/plugins:/var/www/plugins - ./www/sites:/var/www/sites - ./www/themes:/var/www/themes ports: - "8888:8888" # DB svc_muradb: image: mysql:latest environment: MYSQL_DATABASE: muradb MYSQL_ROOT_PASSWORD: 5trongP@55w0rd volumes: - vol_muradb:/var/lib/mysql ports: - "5001:3306" # Mounts volumes: vol_muradb:El siguiente mensaje de error que veo cuando navego por localhost:8888:
500 Error Could not create connection to database server. Code:0 Type:database lucee.runtime.exp.DatabaseException: Could not create connection to database server. at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) at com.mysql.jdbc.Util.getInstance(Util.java:408) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:918) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:897) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:886) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:860)Esto se debe a que cuando se inician los muracms , el svc_muradb aún no finaliza su inicio.
depends_on solo asegura que svc_muradb comience primero y luego inicie muracms . Pero el proceso de inicio svc_muradb es asíncrono. Entonces, antes de que svc_muradb esté listo, es probable que sus muracms ya quieran conectar el db.
Este problema está documentado en la guía oficial , que sugiere que escriba un contenedor para el comando svc_muradb .
Como sigue, solo te doy un ejemplo:
docker-compose.yml:
version: "2" services: web: build: . ports: - "80:8000" depends_on: - "db" command: ["./wait-for-it.sh", "db:5432", "--", "python", "app.py"] db: image: postgresespéralo.sh:
#!/bin/sh # wait-for-postgres.sh set -e host="$1" shift cmd="$@" until PGPASSWORD=$POSTGRES_PASSWORD psql -h "$host" -U "postgres" -c '\q'; do >&2 echo "Postgres is unavailable - sleeping" sleep 1 done >&2 echo "Postgres is up - executing command" exec $cmd Con la solución anterior, el contenedor web ejecutará wait-for-it.sh , y primero intentará vincular su contenedor de dependencia db:5432 , solo después de que confirme que puede vincularse a la base de datos con psql client , luego ejecutará el comando real python app.py .
Por su parte, necesita hacer un cambio relacionado con mysql client test , entonces todo está bien.