Dockerの下で自分のLNMP作業環境を配置する
7333 ワード
通常のPC環境でも以下の構成が可能ですが、MYSQLでmysql公式バージョンに交換すればいいだけです.
Dockerインストール
作業ディレクトリ
Nginxの構築
プロジェクトの作成
まず、静的ファイル
構築時の環境変数の追加
Nginx.conf
仮想ホストの構成
Nginx構成の構築
編集
Nginxの起動
コマンドを実行した後、ツリーベリーパイのIPにアクセスし、正常であれば
PHPの構築
編集
因php.iniの配置は少し長いので、以下のアドレスでphpをコピーすることができます.iniphp-fpm.conf
Dockerfileの追加
構築PHPの追加
仮想ホストはPHP解析をサポートする
ファイルの追加
プレビューの開始
プロセスが終了していない場合は、
PHP拡張機能の追加
再コンパイル
注意:Dockerfileに変更がある場合は、
プレビュー
編集
MYSQLの構築
MYSQL持続化
Dockerコンテナサービスは削除され、データが失われないことを保証します.
ビルド時変数
構成の構築
開始
起動後、データ接続ツールでテストし、リンクアドレス:
ここまで、あなた自身のLNMPの作業環境はすでにできています.
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
を作成します.
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=./workspace
workspaceフォルダnginxの/var/www/html
ホストにマウントされた80ポートをnginxの80ポートHTTP_HOST=80
nginxミラーにマッピングするNGINX_VERSION=alpine
バージョンalpine
conf.dフォルダはnginx下のNGINX_CONFD_DIR=./conf/conf.d
/etc/nginx/conf.d
nginxにマウントする.conf nginxのNGINX_CONF_FILE=./conf/nginx.conf
/etc/nginx/nginx.conf
をマウントNginx.conf
NGINX_LOG_DIR=./log
ファイルの作成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/nginx.conf
ファイルの作成注意:rootの下のパスは/lnmp/conf/conf.d/default.conf
で始まる必要があります./var/www/html
はローカルのdefault
の下のフォルダです.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構成の構築
編集
workspace
以下のdocker-composer.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
Nginxの起動
コマンドを実行した後、ツリーベリーパイのIPにアクセスし、正常であれば
.env
と表示されます$ docker-compose up
PHPの構築
編集
Hello, Docker!
PHP構築変数の追加PHP_CONFIG_FILE=./conf/php.ini
PHP_FPM_CONFIG_FILE=./conf/php-fpm.conf
因php.iniの配置は少し長いので、以下のアドレスでphpをコピーすることができます.iniphp-fpm.conf
Dockerfileの追加
/lnmp/.env
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/php/Dockerfile
ファイルの編集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_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/docker-compose.yml
の下の/lnmp/conf/conf.d/default.conf
のphpは、上のfastcgi_pass php:9000
のサービス名を指し、ある項目に対してPHPバージョンを指定するために使用することができる.#...
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
ファイルの追加
docker-compose.yml
プレビューの開始
プロセスが終了していない場合は、
/lnmp/workspace/default/index.php
が終了してから次のコマンドを実行できます.アクシデントがなければ、ベリーパイのIPにアクセスするとctrl + c
が表示される.$ docker-compose up
PHP拡張機能の追加
Hello, PHP!
変数を追加し、/lnmp/.env
で拡張します.他の拡張は以下の操作を参照してください.PHP_SWOOLE_VERSION=4.2.10
swoole
変数の追加php:
build:
context: ./php
args:
PHP_VERSION: 7.2
PHP_SWOOLE: ${PHP_SWOOLE_VERSION}
/lnmp/docker-compose.yml
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に変更がある場合は、
/lnmp/php/Dockerfile
を追加して再コンパイルしなければなりません.そうしないと、--build
の場合は有効になりません.$ docker-compose up --build
プレビュー
編集
docker-compose up
保存して、ベリーパイのIPにアクセスして、意外にもあなたはswooleの拡張を見つけることができます
MYSQLの構築
MYSQL持続化
Dockerコンテナサービスは削除され、データが失われないことを保証します.
/lnmp/workspace/default/index.php
フォルダを作成します.ビルド時変数
/lnmp/data/mysql
ファイルを編集し、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}"
開始
起動後、データ接続ツールでテストし、リンクアドレス:
/lnmp/.env
ポート: IP
ユーザー名:3306
パスワード:root
$ docker-compose up
ここまで、あなた自身のLNMPの作業環境はすでにできています.