Docker: PHP, Apache и MySQL в одном контейнере / один и тот же Dockerfile - PullRequest
0 голосов
/ 22 октября 2019

Мне нужно изображение, в котором все 3 элемента объединены в один контейнер. Но как бы я ни просматривал Google или искал там Docker Hub, я не нашел изображений для хранения PHP, Apache и MySQL в одном контейнере / Dockerfile.

Кто-нибудь может предложить способ созданиянужный контейнер?

Я также был бы признателен за объяснение причин, по которым этот вид изображений / контейнеров недоступен?

В качестве примечания, я сам не могу представить себе точку, разделяющуюсервер MySQL в другом контейнере возможен из-за того, что сам DB не сохраняется вместе с контейнером и в нем находится только сервер MySQL. Таким образом, даже MySQL, находящийся в том же контейнере, по-прежнему идеально отделен от самого DB.

Ответы [ 2 ]

2 голосов
/ 22 октября 2019

PHP и Apache вместе в одном контейнере - это хорошая идея - в практическом смысле PHP действительно полезен только в сочетании с веб-сервером (вообще говоря). То же самое нельзя сказать о MySQL. Существуют реальные проблемы, связанные с масштабируемостью, избыточностью и доступностью, которые не могут быть решены, если сервер базы данных и том связаны с кодом приложения.

Допустим, вы развернули «Образ ЛАМПЫ» в рабочей среде, а вашисайт становится действительно популярным - круто! Вы получаете много трафика, и вам нужно запустить несколько экземпляров приложения. Вам также нужна реплика для чтения вашей базы данных.

Как вы собираетесь это сделать, если все объединено в одно изображение? Вы вынуждены запускать столько же экземпляров MySQL, сколько и приложений.

2 голосов
/ 22 октября 2019

Доброе утро, bob-12345

Смысл докер-контейнеров в том, чтобы получить более гибкую архитектуру.

Я приведу пример из своей трудовой жизни:

ВыЕсли у вас есть приложение, которое работает на php7.0, вы теперь хотите проверить, работает ли оно с php 7.3, поэтому вы просто останавливаете контейнер php 7.0, запускаете 7.3 и проверяете ваше приложение. Или вы хотите проверить, работает ли он по-прежнему с ngnx и php-fpm и т. Д. ...

Поэтому не рекомендуется размещать на вашем веб-сервере слой кодирования и постоянный слой в одном контейнере из-за проблем с версиями.

Если вы все еще хотите, чтобы все это было в одном. Я бы посоветовал вам начать с простого debian / ubuntu / whatEverDistroYouPrefer и начать сборку так, как вы делаете это на обычном веб-сервере.

Например:

FROM debian:latest
RUN apt-get update \ 
&& apt-get install -y --no-install-recommends \ 
&& http \
&& php \ 
...

Я надеюсь, что смогу вам помочь:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...