Контейнеры Docker разработаны так, чтобы в них работала одна служба, а не как целая виртуальная система (как вы можете видеть с виртуальными ящиками и виртуальными машинами).
В идеале это означает, что вам нужен один контейнер длякаждый:
Кроме того, изображение докера Centos разработано в качестве основы для наследования от других.или для выполнения конкретной задачи ОС (например, вызовов cURL или оболочки), которая на самом деле не является тем, что вам нужно.
Я бы порекомендовал для вашего случая использовать docker-compose, который позволит вам легконастройте промежуточные контейнеры и управляйте ими как одним проектом.
Я бы порекомендовал docker-compose.yml
настроить файл следующим образом:
version: '3'
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./src:/(nginx config root folder)
- ./config/site.conf:/etc/nginx/conf.d/site.conf
links:
- php
- mariadb
php:
image: php:7-fpm
mariadb:
image: mariadb
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
После этого в вашей папке будет /config/
Папка проекта, для которой вам понадобится файл site.conf
для настроек nginx.
Вам также понадобится папка /src/
в папке проекта, которая будет содержать весь php / веб-код для вашегопроект.
Тома, монтируемые в файле docker-compose.yml
, загрузят их в контейнер для вас.Монтирование томов работает путем сопоставления host folder path
: container folder path
, когда что-то меняется в одном, оно обновляется в другом, почти как при копировании / вставке.Имейте в виду, что вам может потребоваться обновить права доступа к файлам.
Для Mariadb вы можете добавить еще volume
для сопоставления файлов данных в контейнере с вашей папкой хоста.Кроме того, вы можете открыть порт mysql, чтобы опросить базу данных с помощью такого инструмента, как mysql workbench, добавив раздел ports
для порта 3306
, как показано в разделе web
.Значение mysql_root_password
установит пароль пользователя root.
Вы можете запустить его с помощью команды docker-compose up
из каталога вашего проекта.
Когда вам нужно вручную перезапустить nginx (илидругие услуги) вы бы остановили и запустили контейнеры.Вы можете сделать это с помощью команд:
docker-compose up
- Запуск контейнеров docker-compose down
- Останов контейнеров
Если вы хотите отправитьзапустив контейнер в фоновом режиме (чтобы он не занимал окно терминала), вы бы использовали: docker-compose up -d
Дайте мне знать, если у вас есть какие-либо вопросы или если что-то неясно, я был бы рад обновить мой ответ!