1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/xihafugui-docker-lnmp

Клонировать/Скачать
使用Docker搭建本地lnmp开发环境formac.md 10 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 03.06.2025 00:23 24e925a

Docker

Docker — это открытая система для создания контейнеров приложений, написанная на языке Go и распространяемая под лицензией Apache 2.0.

Docker позволяет разработчикам упаковывать их приложения и зависимости в легковесные, переносимые контейнеры, которые затем можно запустить на любом популярном Linux-сервере, обеспечивая тем самым виртуализацию.

Контейнеры полностью изолированы друг от друга, как приложения на iPhone, и имеют минимальные затраты по производительности.

Основные понятия

1. Изображения — images

a. Изображение похоже на образ виртуальной машины и представляет собой только-для-чтения-доступный шаблон для Docker-движка, содержащий файловую систему.

b. Изображение служит основой для создания Docker-контейнеров. С помощью системы версионного контроля и инкрементальной файловой системы Docker предоставляет простой способ создания и обновления существующих изображений.

2. Контейнеры — container

a. Контейнер похож на легковесную изолированную среду, используемую Docker для запуска и изоляции приложений.

b. Контейнер — это запущенный экземпляр приложения, созданный из изображения. Его можно запускать, останавливать, перезапускать и удалять, и все эти контейнеры изолированы друг от друга.

c. Контейнер можно рассматривать как упакованный в контейнер набор простой Linux-среды и запущенных в ней приложений.d. Изображение само по себе является только-для-чтения. При запуске контейнера из изображения Docker создает на вершине изображения изменяемый слой, в то время как само изображение остается неизменным.

3. Репозитории (Repository)

a. Репозиторий похож на систему управления версиями кода и представляет собой место хранения изображений Docker.

Примечание: Регистрационный сервер и Docker-репозиторий — это разные вещи. Регистрационный сервер — это место хранения репозиториев.

Установка MySQL с помощью Docker

Сначала мы извлекаем изображение MySQL из репозитория

docker pull mysql:5.6

mysql:5.6 Число после двоеточия называется TAG и похоже на версию. Список доступных TAG можно найти здесь: https://hub.docker.com/r/library/

avatar

Нажав на определенное приложение, можно увидеть список доступных TAG.

avatar

Затем используем команду docker images для просмотра извлеченного изображения MySQL

avatar

Можно увидеть все извлеченные изображения.#### Затем запускаем и активируем контейнер

docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=xy123456 --name docker_mysql mysql:5.6
-d Запускает контейнер в фоновом режиме
-p Устанавливает соотношение портов между хостом и контейнером, где число перед двоеточием — это порт хоста, а число после двоеточия — это порт контейнера
-e Устанавливает переменные окружения, здесь задается начальный пароль для пользователя root MySQL, который обязательно должен быть установлен
--name Устанавливает имя контейнера, которое должно быть уникальным

Просмотр созданных контейнеров с помощью команды docker ps -a

docker ps -a

avatarМожно увидеть, что состояние контейнера Up, что означает, что контейнер запущен, и отображаются сопоставления портов между хостом и контейнером.

Для просмотра только запущенных контейнеров используйте команду docker ps.

Вход в только что созданный контейнер

docker exec -ti docker_mysql /bin/bash
-t создает псевдотерминал в контейнере
-i позволяет взаимодействовать с стандартным вводом (STDIN) контейнера

По умолчанию в контейнере не установлен vim, поэтому его нужно установить. Не забудьте выполнить команду apt update перед установкой, иначе могут возникнуть проблемы.

После входа в контейнер с MySQL создайте пользователя, который сможет подключаться к базе данных из других хостов. Можно также использовать root для подключения, но это не рекомендуется.### Установка php-fpm в Docker

Загрузка образа php-fpm

docker pull php:7.1-fpm

Создание контейнера php-fpm

docker run -d -v /Users/xxx/Sites:/var/www/html -p Yöntem:9000:9000 --link docker_mysql:mysql --name docker_phpfpm71 php:7.1-fpm
-d запускает контейнер в фоновом режиме
-p добавляет сопоставление портов между хостом и контейнером
-v добавляет сопоставление каталогов, то есть каталог /Users/xxx/Sites хоста синхронизируется с каталогом /var/www/html контейнера
--name имя контейнера
--link устанавливает связь с другим контейнером, что позволяет использовать сервисы из этого контейнера

Если параметр --link не указан, это тоже работает, так как контейнер имеет уникальный IP-адрес, который можно использовать для подключения.

Исправления:

  1. "Yöntem" оставлено без изменений, так как это имя сервиса или порта, указанное в команде docker run.
  2. Текстовое описание параметров команды docker run переведено на русский язык.
  3. Текстовое описание использования параметра --link переведено на русский язык.### Установка расширений PHP в Docker Вход в контейнер и установка расширения
docker-php-ext-install pdo_mysql

Установка nginx в Docker

Загрузка образа nginx

docker pull nginx:1.15.0

Запуск nginx

docker run -d -p 9091:80 -v /User/lidan/Sites:/var/www/html --link docker_phpfpm71:phpfpm --name docker_nginx nginx:1.15.0
-d запускает контейнер в фоновом режиме
-p добавляет сопоставление портов между хостом и контейнером
-v добавляет сопоставление каталогов, здесь лучше сделать корневой каталог nginx-контейнера таким же, как и у php-контейнера. Но это не обязательно, если каталоги не совпадают, то при настройке nginx это нужно учитывать
--name устанавливает имя контейнера
--link устанавливает связь с другим контейнером
```#### Войдите в контейнер nginx, чтобы изменить конфигурационный файл nginx для поддержки php

docker exec -ti docker_nginx /bin/bash


-t создает псевдотерминал в контейнере -i позволяет взаимодействовать с стандартным вводом (STDIN) контейнера

#### Найдите конфигурационный файл nginx в контейнере, по умолчанию он находится в директории /etc/nginx

location ~ .php$ { root /var/www/html; fastcgi_index index.php; fastcgi_pass docker_phpfpm71:9000; // Здесь укажите контейнер, связанный с помощью --link, или используйте IP-адрес контейнера php fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; // Если корневая директория вашего сайта отличается от корневой директории контейнера php, замените $document_root на корневую директорию php, иначе php не сможет найти файлы }


Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/xihafugui-docker-lnmp.git
git@api.gitlife.ru:oschina-mirror/xihafugui-docker-lnmp.git
oschina-mirror
xihafugui-docker-lnmp
xihafugui-docker-lnmp
master