ホームページ  >  記事  >  バックエンド開発  >  Docker での LNMP 作業環境の展開に関するチュートリアル (詳細な手順)

Docker での LNMP 作業環境の展開に関するチュートリアル (詳細な手順)

不言
不言転載
2019-01-28 09:44:404734ブラウズ

この記事では、Docker に LNMP 作業環境をデプロイするためのチュートリアル (詳細な手順) を紹介します。これには一定の参考値があります。必要な友人は参照してください。お役に立てば幸いです。

通常の PC 環境でも、MYSQL を正式版の mysql に置き換えるだけで、次の構成を使用できます。

Docker のインストール

$ curl -sSL get.docker.com | sudo sh

作業ディレクトリ

/lnmp/conf には仮想ホスト構成が保存されます
/lnmp/data /mysql mysql データベース データを保存します
/lnmp/log nginx および mysql ログを保存します
/lnmp/workspace さまざまなプロジェクト ファイルを保存します

/lnmp/.env docker 起動時の環境変数設定
/ lnmp/docker-compose.yml 構成ファイルのビルド
/lnmp/php/Dockerfile PHP 構成ファイルのコンパイル

Nginx のビルド

プロジェクトの作成

最初に静的ファイルを作成します。index.html
/lnmp/workspace/default/index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    Hello, Docker!
</body>
</html>

ビルド中に環境変数を追加します

.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=./workspace workspace文件夹挂载到nginx下的 /var/www/html
HTTP_HOST=80           宿主机的80端口映射到nginx下的80端口
NGINX_VERSION=alpine   nginx镜像使用alpine版本
NGINX_CONFD_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=./log


Nginx.conf

/lnmp/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;
}

仮想ホストの構成

/lnmp/conf/conf.d/default.conf ファイルを作成します
注: root の下のパスは /var/www/html で始まる必要があります。デフォルトはワークスペースの下のローカル A フォルダーです

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-composer.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 起動

コマンド実行後、Raspberry Pi の IP にアクセスすると、通常は Hello, Docker!

$ docker-compose up

# と表示されます。 PHP のビルド

/lnmp/.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/Dockerfile

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

/lnmp/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 解析をサポートします

/lnmp/conf/conf .d/default.conf

以下の fastcgi_pass php:9000 の php は、上記の docker-compose.yml 内のサービス名を参照しており、特定のプロジェクトの PHP バージョンを指定するために使用できます

#...其它代码

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

<?php

echo ‘Hello, PHP!’;

プレビューを開始

終了していない場合前のプロセスは、ctrl c で終了できます。 次のコマンドを実行します。

予期せぬことが起こらなければ、Raspberry Pi にアクセスするときの IP には「Hello, PHP!」と表示されます。

$ docker-compose up

PHP 拡張機能を追加

/lnmp/.env を追加変数, 以下は swoole 拡張機能のデモです。他の拡張機能については、以下の操作を参照してください。

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 をダウンロードしてコンパイルします swoole

# ...其它代码
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 を変更した場合は、 --build を追加して一度再コンパイルする必要があります。そうしないと、docker-compose up 時に有効になりません

$ docker-compose up --build
Preview

/lnmp/workspace/default/index.php を編集して保存し、Raspberry Pi の IP にアクセスすると、予想どおり swoole 拡張機能

<?php

phpinfo();
## が見つかります。 #MYSQL の構築

MYSQL の永続性

#データが失われないように Docker コンテナ サービスは削除されました

/lnmp/data/mysql フォルダーを作成します

ビルド時変数

/lnmp/.env ファイルを編集し、mysql サービス ポート、ログイン パスワード、およびデータ永続フォルダーを追加します。

MYSQL_HOST_PORT=3306
MYSQL_PASSWORD=1234
MYSQL_DATA_DIR=./data/mysql

ビルド構成

version: "3"
services:
    #... 其它代码
    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

これまでのところ、独自の LNMP 作業環境の準備が整いました。

以上がDocker での LNMP 作業環境の展開に関するチュートリアル (詳細な手順)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。