この記事では、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.confphp.ini 設定は少し長いため、次のアドレスにコピーできます
php.ini
php-fpm.conf
Dockerfile を追加
/lnmp/php/DockerfileARG 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 --buildPreview/lnmp/workspace/default/index.php を編集して保存し、Raspberry Pi の IP にアクセスすると、予想どおり swoole 拡張機能
<?php phpinfo();## が見つかります。 #MYSQL の構築
MYSQL の永続性
#データが失われないように Docker コンテナ サービスは削除されました/lnmp/data/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
以上がDocker での LNMP 作業環境の展開に関するチュートリアル (詳細な手順)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。