2017-09-20 3 views
0

Dies ist das Szenario:Wie DEBUG REDIS, APACHE einen Docker-Container ausgibt?

Der Behälter aus einem Bild kommt mit dem Dockerfile folgen erstellt:

FROM php:5-apache 


RUN apachectl -M 
RUN a2enmod rewrite 
RUN a2enmod expires 
RUN service apache2 restart 
RUN apachectl -M 

RUN php -m 
RUN apt-get update 
RUN php -m 
RUN apt-get install -y php5-redis 
RUN apt-get install -y redis-server 
#RUN redis-server 
RUN cp /etc/php5/mods-available/redis.ini /usr/local/etc/php/conf.d && ln -s /usr/lib/php5/20131226/redis.so /usr/local/lib/php/extensions/no-debug-non-zts-20131226/redis.so 
RUN php -m 



COPY src/ /var/www/html 
EXPOSE 80 

#CMD ["redis-server"] 

Bitte beachten Sie die letzte Zeile CMD ["redis-server"].

Nachdem das Bild aufgebaut ist, ich die Container wie diese

docker run -p 80:80 my_img 

erstellen Wenn das Bild mit #CMD ["redis-server"] im Browser integriert ist (0.0.0.0:80) Ich erhalte eine Fehlermeldung (das kommt von meinem index.php Datei) "Could not connetc to REDIS". Vielleicht liegt es daran, dass REDIS nicht initialisiert wurde.

Wenn das Bild mit CMD ["redis-server"] bauen und dass initialisiert REDIS (ich das REDIS Symbol in dem Docker Terminal sehen kann), aber ich erhalte eine Fehlermeldung im Browser:

enter image description here

Also, ich habe keine Hinweise, was passiert. Ich bin neu in Docker und habe keine Ahnung, wie man es debuggt. Es kann etwas mit den Portkonflikten (REDISxApache) oder vielleicht mit der REDIS selbst zu tun haben. Oder so sollte ich REDIS nicht initialisieren.

Irgendwelche Hilfe dazu?

Antwort

0

Sie führen keine abhängigen Dienste in demselben Container aus. Sie führen sie als Teil compose

Docker-compose.yml

version: '3' 
services: 
    php: 
    build: 
     context: . 
    ports: 
     - "80:80" 
    redis: 
    image: redis 

Sie die Zusammensetzung bis bekommen

$ docker-compose up 

Sie verwenden eine Verbindung herstellen müssen, um an der Adresse Redis redis:6379 in Ihrem PHP-Code anstelle von 127.0.0.1:6379 Weitere Informationen über Docker komponieren finden Sie unter https://docs.docker.com/compose/

+0

ok @Tarun Ich habe die Idee, aber ich bin neu in Docker. Also, sollte ich eine neue Datei namens docker-composer.yml erstellen und sie im selben Verzeichnis meiner dockerfile speichern? Dann, nachdem ich mein Bild ausgeführt habe, sollte ich ein anderes Terminal öffnen und '$ docker-compose up' ausführen, das einen anderen Container erstellen wird ... richtig? – zwitterion

+0

Ja, das ist korrekt –

+0

Das ist, was ich 'docker-compose up ERROR: In der Datei './docker-compose.yml' muss Service 'Verison' ein Mapping sein, kein String '. – zwitterion

Verwandte Themen