Рубрики
Uncategorized

Разверните свою собственную рабочую среду LNMP в Docker

Автор оригинала: David Wong.

Обычные среды ПК также могут быть настроены следующим образом, за исключением того, что 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 была завершена.