2017-05-03 2 views
0

Ich habe ein sehr seltsames Problem hier, und ich bin mir nicht sicher, was ich falsch mache, muss etwas einfaches sein, aber ich kann es einfach nicht herausfinden.PHP-FPM startet nicht auf Docker mit docker-komponieren

Meine Docker-compose.yml:

mysql: 
    image: mysql:5.7 
    container_name: mysql 
    environment: 
    - MYSQL_ROOT_PASSWORD=aaa 
    - MYSQL_DATABASE=aaa 
    - MYSQL_USER=aaa 
    - MYSQL_PASSWORD=aaa 
    - MYSQL_PORT=3306 
    - MYSQL_HOST=localhost 

php-fpm: 
    build: . 
    dockerfile: php-fpm/Dockerfile 
    container_name: php-fpm 
    volumes: 
    - ../app:/var/www/html 
    links: 
    - mysql 
    environment: 
    PHP_php5enmod: 'bcmath gd gmp intl mbstring mysql mysqli pcntl pdo_mysql redis zip sockets' 

caddy: 
    build: . 
    dockerfile: caddy/Dockerfile 
    container_name: caddy 
    volumes: 
     - ../app:/var/www/html 
     - ./caddy/Caddyfile:/etc/Caddyfile 
     - ./caddy/certs:/root/.caddy 
    ports: 
    - "80:80" 
    - "443:443" 
    links: 
    - mysql 
    - php-fpm 

Die Dockerfile für php-fpm:

FROM alterway/php:7.1-fpm 

# update 
RUN apt-get update && apt-get install -y bash zip unzip 

# require the asset plugin 
RUN composer global require "fxp/composer-asset-plugin:^1.3.1" 

# copy the entrypoint 
COPY ./php-fpm/docker-entrypoint.sh /root/docker-entrypoint.sh 

# setup permissions 
RUN chmod +x /root/docker-entrypoint.sh 

# Clean up, try to reduce image size (much as you can on Debian..) 
RUN apt-get autoremove -y \ 
    && apt-get clean all \ 
    && rm -rf /var/lib/apt/lists/* \ 
    && rm -rf /usr/share/doc /usr/share/man /usr/share/locale 

ENTRYPOINT ["/root/docker-entrypoint.sh"] 

(wenn ich die ENTRYPOINT Kommentar aus dem Behälter beginnt just fine)

Und In meiner Datei docker-entrypoint.sh versuche ich nur eine Migration auszuführen:

#!/bin/bash 

# run the migration 
/var/www/html/yii migrate/up --interactive=0 --migrationPath=/var/www/html/vendor/twisted1919/yii2-options/migrations 

Also alles, was ich tun möchte, ist ein Shell-Skript direkt nach dem Start des Containers auszuführen, aber nichts scheint zu funktionieren. Eine andere Sache, wenn ich den ENTRYPOINT in meiner Dockerfile auskommentiere, während der Container startet und die Datenbankmigration ausführt, beschwert es sich, dass es keinen gültigen mysql Treiber findet, aber wenn ich mich im Container anmelde und versuche, das auszuführen Migration manuell, dann funktioniert es gut, also vielleicht etwas mit alterway/docker-php

+0

Ich denke, das Problem hier ist, dass MYSQL nicht bereit ist, Verbindungen zu akzeptieren, wenn der PHP-FPM-Container versucht, die Migrationen auszuführen. Ich untersuche immer noch. – Twisted1919

Antwort

0

Ok, so dass die Frage war in der Tat die Tatsache, mysql nicht bereit war, für Verbindungen berichten. Ich ging nicht für eine Gesundheits-Check-Sache, ich wickelte einfach alles in ein Shell-Skript, um docker-compose starten/stoppen/neustarten und auch die Skripte, die ich brauche innerhalb des Containers aufrufen, es ist viel einfacher so.

0

falsch ist Ich denke, Hinzufügen von health check kann Ihnen helfen.

Auf diese Weise kann docker-compose zu warten, mysql, gesund zu sein, bevor php-fpm

Verwandte Themen