2015-12-03 16 views
5

Ho creato un piccolo docker-compose.yml che funzionava come un incantesimo per distribuire piccole istanze di WordPress. Ecco come si presenta:docker-comporre connessione wordpress mysql rifiutata

wordpress: 
    image: wordpress:latest 
    links: 
    - mysql 
    ports: 
    - "1234:80" 
    environment: 
    WORDPRESS_DB_USER: wordpress 
    WORDPRESS_DB_NAME: wordpress 
    WORDPRESS_DB_PASSWORD: "password" 
    WORDPRESS_DB_HOST: mariadb 
    MYSQL_PORT_3306_TCP: 3306 
    volumes: 
    - /srv/wordpress/:/var/www/html/ 
mysql: 
    image: mariadb:latest 
    mem_limit: 256m 
    container_name: mariadb 
    environment: 
    MYSQL_ROOT_PASSWORD: "password" 
    MYSQL_DATABASE: wordpress 
    MYSQL_USER: wordpress 
    MYSQL_PASSWORD: "password" 
    volumes: 
    - /srv/mariadb:/var/lib/mysql 

Ma quando mi metto subito (forse dall'aggiornamento finestra mobile di Docker versione 1.9.1, costruire a34a1d5), non riesce

wordpress_1 | Warning: mysqli::mysqli(): (HY000/2002): Connection refused in - on line 10 
wordpress_1 | 
wordpress_1 | MySQL Connection Error: (2002) Connection refused 

Quando ho gatto /etc/hosts del wordpress_1 ci sono voci per MySQL:

172.17.0.10 mysql 12a564fdbc56 mariadb 

e sono in grado di eseguire il ping del server MariaDB.

Quando ho docker-compose up, WordPress viene installato e dopo diversi riavvii le stampe contenitore MariaDB:

Version: '10.0.22-MariaDB-1~jessie' socket: '/var/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution 

Quali schould indicano che sia in esecuzione, non è vero?

Come si ottiene che WordPress sia in grado di connettersi al contenitore MariaDB?

+1

quale porta è il tuo contenitore mysql esponendo 3306? hai una variabile di ambiente: MYSQL_PORT_3306_TCP_PORT? – Michael

+0

Grazie per la risposta. È in esecuzione su 3306, come puoi vedere nel messaggio avviato docker mariadb (scorrere a destra) ... ancora non ho idea, perché questo settaggio non funziona più – Harry

+0

Che è all'interno del contenitore, sto chiedendo qual è la porta esposta sul contenitore docker: porta docker Michael

risposta

2

Il motivo di questo comportamento era probabilmente correlato a un aggiornamento recente del kernel e della finestra mobile. Ho riconosciuto diversi altri problemi di connessione in altre configurazioni di composizione docker. Pertanto ho riavviato il server (non solo il servizio docker) e non ho avuto problemi di questo tipo da allora.

+0

Sì, il daemon docker riavviato ha aiutato – lisak

+0

Il riavvio del daemon della finestra mobile non risolve questo problema. –

0

Stavo usando il tuo docker-compose.yml, ha avuto lo stesso problema. Il solo riavvio non è stato risolto. Dopo quasi un'ora di ricerca dei registri, ho scoperto che il problema era il seguente: wordpress servizio iniziato a collegare il servizio mysql prima dell'avvio completo. Semplicemente aggiungendo depends_on non sarà di aiuto. Docker Compose wait for container X before starting Y

il lavoro intorno potrebbe essere avviare il server db prima di Su. Quando è completamente avviato, esegui docker-compose up. O semplicemente usa il servizio esterno.

+0

puoi usare 'depends_on: database' nel servizio di wordpress, ma ancora questo non funziona per me –

0

Per risolvere questo problema la prima cosa da fare è:

Aggiungere il seguente codice per wordpress & contenitori di database (nel file finestra mobile-composizione):

restart: unless-stopped 

Questo farà in modo di Database viene avviato e inizializzato prima che il contenitore di wordpress provi a connettersi ad esso. Quindi riavviare il motore finestra mobile

sudo restart docker 

o (per Ubuntu 15+)

sudo service docker restart 

Qui la configurazione completa che ha funzionato per me, per l'installazione WordPress con MariaDB:

version: '2' 

services: 
    wordpress: 
    image: wordpress:latest 
    links: 
     - database:mariadb 
    environment: 
     - WORDPRESS_DB_USER=wordpress 
     - WORDPRESS_DB_NAME=mydbname 
     - WORDPRESS_TABLE_PREFIX=ab_ 
     - WORDPRESS_DB_PASSWORD=password 
     - WORDPRESS_DB_HOST=mariadb 
     - MYSQL_PORT_3306_TCP=3306 
    restart: unless-stopped 
    ports: 
     - "test.dev:80:80" 
    working_dir: /var/www/html 
    volumes: 
    - ./wordpress/:/var/www/html/ 
    database: 
    image: mariadb:latest 
    environment: 
    - MYSQL_ROOT_PASSWORD=password 
    - MYSQL_DATABASE=mydbname 
    - MYSQL_USER=wordpress 
    - MYSQL_PASSWORD=password 
    restart: unless-stopped 
    ports: 
    - "3306:3306" 
0

Anch'io ho avuto problemi qui. Stavo usando docker-compose per configurare più siti web wordpress su un singolo (micro) Virtual Private Server, incluso phpmyadmin e jwilder/nginx-proxy come controller.

$ docker logs XXXX aiuterà a indicare le aree di interesse.Nel mio caso, i database MariaDB continuerebbero a riavviarsi tutto il tempo.

Si scopre che tutta quella roba non sarebbe adatta a un servizio Micro 512M Single CPU. Non ho mai ricevuto messaggi di errore che mi dicessero direttamente che la dimensione era un problema, ma dopo aver aggiunto le cose, mi sono reso conto che quando tutti i database si stavano avviando, stavo esaurendo la memoria. Un aggiornamento a 1 Gb, 1 servizio CPU ha funzionato bene.

Problemi correlati