Wie kann ich den Cron-Start auf einem neuen Image konfigurieren, ohne den Apache-Dienst zu beschädigen?

Wie kann ich den Cron-Start auf einem neuen Image konfigurieren, ohne den Apache-Dienst zu beschädigen?

Ich erstelle mit Cron ein neues Image, das auf dem Image basiert php:7.3-apache-buster.

Der Aufbau des Images verläuft reibungslos. Der Container wird ebenfalls mit dem Status „Up“ erstellt. Allerdings http://localhost:8082wird beim Tippen im Browser keine Apache-Seite angezeigt. Der Apache-Dienst wird vom php:7.3-apache-busterImage übernommen.

In meiner Docker-Datei lautet die letzte Zeile CMD cron && tail -f /var/log/cron.log. Ich glaube, dass diese Zeile das Problem verursacht.

Wenn ich mit dem Befehl den Container betrete docker exec -it cont-mysite-01 /bin/bashund den Befehl ausführe service apache2 start, startet Apache normal.

Was verstehe ich nicht?

Wie kann ich ein Image erstellen, bei dem der Apache aus dem Basisimage und der Cron aus dem neuen Image zusammenarbeiten?

Meine Referenzen:

https://github.com/Ekito/docker-cron/blob/master/Dockerfile

https://hub.docker.com/_/php

Antwort1

Ich habe das Problem wie folgt gelöst:

Ich habe die Zeile CMD cron && tail -f /var/log/cron.logaus der Docker-Datei entfernt.

Dann habe ich die Zeile hinzugefügt RUN sed -i 's/^exec /service cron start\n\nexec /' /usr/local/bin/apache2-foreground.

Nachdem Sie den Container mit dem Image erstellt haben, führen Sie die folgenden Befehle aus, um Apache2 und Cron zu überprüfen:

docker exec -it cont-mysite-01 service apache2 status

docker exec -it cont-mysite-01 service cron status

Link der mir geholfen hat:

http://www.idein.it/joomla/14-docker-php-apache-with-crontab

verwandte Informationen