У меня есть PHP web application
и я хочу преобразовать его в docker
.
У меня есть эти контейнеры
mysql
php
nginx
У меня есть исходный код в моей папке хоста как /var/www/site1
Теперь, когда я запускаю nginx, я могу установить site1
в nginx как /usr/nginx/share/html
Но я не уверен, как я связываюсь с PHP-контейнером. Могу ли я иметь автономный контейнер PHP только с установленным PHP или мне нужно иметь некоторый веб-сервер вместе с PHP
Мой взгляд на контейнеры докеров состоит в том, что каждый контейнер обычно представляет один процесс. Например, mysql или nginx, как в вашем примере. Контейнеры обычно общаются друг с другом, используя сетевые или общие файлы в томах.
Каждый контейнер запускает свою собственную операционную систему (обычно указанную в FROM
-section в вашем Dockerfile
. В вашем случае вы предполагаете, что nginx-контейнер работает в одном процессе с одной операционной системой и что php-библиотеки работают в другом процесс (в другом os). Я не уверен, что это выполнимо, но похоже, что это странный способ делать вещи.
Мое предложение состоит в том, что вы создаете два контейнера:
nginx+php
- этот контейнер содержит установку PHP, а также материал Nginxmysql
- этот контейнер содержит базу данныхКонтейнер может взаимодействовать через классические сети или в виде связанных контейнеров.
Тем не менее, PHP файлы, которые вы хотите выполнить (т.е. Ваш сайт), должны быть динамически смонтированы в качестве тома данных в контейнере nginx+php
или в контейнере данных.