Обычные среды ПК также могут быть настроены следующим образом, за исключением того, что MYSQL может быть заменен официальной версией mysql.
$ curl -sSL get.docker.com | sudo sh
рабочий каталог
//snmp/conf Хранить конфигурацию виртуального хоста snmp/данные/mysql Запускать данные базы данных MySQL lnmp/журнал Хранить журналы nginx, MySQL lnmp/рабочее пространство/| Хранить различные проектные документы
//nmp/.env Конфигурация переменных среды при запуске docker /lnmp/docker-compose.yml Файл конфигурации во время сборки /lnmp/|/php Файл Dockerfile Компиляция файлов конфигурации PHP
Создание Nginx
Создать проект
Сначала создайте статический файл index.html /lnmp/workspace/default/index.html
Document
Hello, Docker!
Добавление переменных среды во время сборки
редактировать .env файл
SOURCE_DIR=./workspace HTTP_HOST=80 NGINX_VERSION=alpine NGINX_CONFD_DIR=./conf/conf.d NGINX_CONF_FILE=./conf/nginx.conf NGINX_LOG_DIR=./log
SOURCE_DIR=./рабочая область Папка рабочей области, смонтированная под nginx /var/www/html HTTP_HOST=80 80 портов хоста сопоставляются с 80 портами в разделе nginx NGINX_VERSION=alpine Зеркальное использование Nginx alpine Издание
NGINX_CONF_DIR=./conf/conf.d Папка conf.d монтируется под nginx /etc/nginx/conf.d NGINX_CONF_FILE=./conf/nginx.conf Nginx.conf монтирует файлы nginx /etc/nginx/nginx.conf NGINX_LOG_DIR=./журнал
NGINX_CONF_DIR=./conf/conf.d || Папка conf.d монтируется под nginx ||/etc/nginx/conf.d || NGINX_CONF_FILE=./conf/nginx.conf || Nginx.conf монтирует файлы nginx ||/etc/nginx/nginx.conf || NGINX_LOG_DIR=./журнал
Создайте файл/snmp/conf/nginx.conf
user nginx;
worker_processes 1;
pid /var/run/nginx.pid;
error_log /var/log/nginx/nginx.error.log warn;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/nginx.access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
Настройка Виртуального Хоста
Установить /snmp/conf/conf.d/default.conf файл Будьте осторожны: Путь под корнем должен быть /var/www/html Start, по умолчанию Это наше местное заведение. рабочее пространство Папка ниже
server {
listen 80;
server_name localhost default-server;
root /var/www/html/default;
index index.php index.html index.htm;
access_log /var/log/nginx/nginx.localhost.access.log main;
error_log /var/log/nginx/nginx.localhost.error.log warn;
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
Построение конфигурации Nginx
редактировать docker-compose.yml Следуя ${} Все это выше. .env Переменные, настроенные в файлах
version: "3"
services:
nginx:
image: nginx:${NGINX_VERSION}
ports:
- ${HTTP_HOST}:80
volumes:
- ${SOURCE_DIR}:/var/www/html/:rw
- ${NGINX_CONFD_DIR}:/etc/nginx/conf.d/:rw
- ${NGINX_CONF_FILE}:/etc/nginx/nginx.conf:ro
- ${NGINX_LOG_DIR}:/var/log/nginx/:rw
restart: alwaysЗапустите Nginx
После выполнения команды получите доступ к IP-адресу raspberry pi, и он будет отображаться нормально. Привет, Докер!
$ docker-compose up
Построение PHP
редактировать /snmp/.env Добавить PHP для создания переменных
PHP_CONFIG_FILE=./conf/php.ini PHP_FPM_CONFIG_FILE=./conf/php-fpm.conf
Поскольку конфигурация php.ini немного длинная, ее можно скопировать по следующему адресу php.ini php-fpm.conf
Добавить файл Dockerfile
/lnmp/php/Докер-файл
ARG PHP_VERSION
FROM php:${PHP_VERSION}-fpm
RUN apt update
RUN apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libmcrypt-dev \
libpng-dev \
unixodbc-dev \
gcc g++ make autoconf libc-dev pkg-configДобавить PHP сборки
редактировать /snmp/docker-compose.yml файл
version: "3"
services:
nginx:
image: nginx:${NGINX_VERSION}
ports:
- ${HTTP_HOST}:80
volumes:
- ${SOURCE_DIR}:/var/www/html/:rw
- ${NGINX_CONFD_DIR}:/etc/nginx/conf.d/:rw
- ${NGINX_CONF_FILE}:/etc/nginx/nginx.conf:ro
- ${NGINX_LOG_DIR}:/var/log/nginx/:rw
restart: always
php:
build:
context: ./php
args:
PHP_VERSION: 7.2
volumes:
- ${SOURCE_DIR}:/var/www/html/:rw
- ${PHP_PHP_CONFIG_FILE}:/usr/local/etc/php/php.ini:ro
- ${PHP_FPM_CONFIG_FILE}:/usr/local/etc/php-fpm.d/www.conf:rw
cap_add:
- SYS_PTRACE
restart: always
networks:
- defaultВиртуальный хост поддерживает синтаксический анализ PHP
//snmp/conf/conf.d/default.conf Ниже fastcgi_pass php:9000 PHP выше docker-compose.yml Имя службы, которое можно использовать для указания версии PHP для проекта
#... Other code
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}Добавление файлов
/lnmp/workspace/default/index.php
Предварительный просмотр запуска
Если процесс не был завершен ранее, вы можете ctrl + c После завершения выполнить следующую команду. Если непреднамеренно, IP-адрес доступа к raspberry pi отобразится Привет, PHP! .
$ docker-compose up
Добавление расширений PHP
//nmp/.env Добавьте переменные, как показано ниже Демонстрация расширения swool , другие расширения относятся к следующим операциям
PHP_SWOOLE_VERSION=4.2.10
/lnmp/docker-compose.yml Добавление переменных
php:
build:
context: ./php
args:
PHP_VERSION: 7.2
PHP_SWOOLE: ${PHP_SWOOLE_VERSION}/lnmp/php/Dockerfile Скачать и скомпилировать swool
#... Other code
ARG PHP_SWOOLE=false
RUN if [ ${PHP_SWOOLE} != false ]; then \
curl -O http://pecl.php.net/get/swoole-${PHP_SWOOLE}.tgz -L \
&& pecl install swoole-${PHP_SWOOLE}.tgz \
&& docker-php-ext-enable swoole \
;fiПерекомпилировать
Примечание: Если файл Dockerfile изменен, его необходимо добавить --построить Перекомпилировать один раз, в противном случае docker-составьте , когда он не работает
$ docker-compose up --build
предварительный просмотр
редактировать /lnmp/workspace/default/index.php Безопасно, получите доступ к IP-адресу raspberry pie, и вы сможете найти расширения swool без удивления.
Создание MYSQL
Сохраняемость MYSQL
Служба контейнеров Docker была удалена, чтобы гарантировать, что данные не будут потеряны Установить /snmp/данные/mysql Папка
Переменная времени строительства
отредактируйте /snmp/.env Файл, добавьте порт службы MySQL, пароль для входа и папку сохранения данных.
MYSQL_HOST_PORT=3306 MYSQL_PASSWORD=1234 MYSQL_DATA_DIR=./data/mysql
Конфигурация здания
version: "3"
services:
#... Other code
mysql:
image: tobi312/rpi-mysql
ports:
- ${MYSQL_HOST_PORT}:3306
volumes:
- ${MYSQL_DATA_DIR}:/var/lib/mysql:rw
environment:
MYSQL_ROOT_PASSWORD: "${MYSQL_PASSWORD}"запуск
После запуска протестируйте с помощью средства подключения к данным, адрес ссылки: Raspberry pi IP Порт: 3306 Имя пользователя: root Пароль: 1234
$ docker-compose up
До сих пор ваша собственная рабочая среда SNMP была завершена.