dockerでlnmp環境を構築する方法

dockerでlnmp環境を構築する方法

プロジェクトディレクトリを作成する

php ディレクトリをコピーする

次のプロジェクト構造を作成します

  • サイトディレクトリはプロジェクトファイルが置かれる場所です
  • サービスディレクトリはサービス関連の構成を配置します
  • スクリプト カスタムスクリプトを配置する
├── Readme.md
├── docker-compose.yml
├── スクリプト
├── サービス
│ ├── マリアdb
│ │ └── Dockerファイル
│ ├── nginx
│ │ ├── Dockerfile
│ │ ├── conf.d
│ │ │ └── default.conf
│ │ └── nginx.conf
│ ├──php
│ │ └── Dockerファイル
│ └── レディス
│ └── Dockerファイル
└── サイト
 ├──index.html
 └──index.php

 
8 つのディレクトリ、10 つのファイル

docker-composeファイルを編集する

バージョン: "3"
サービス: 
 php:
 ビルド: ./services/php
 ポート数: 
 # - 「9001:9000」
 コンテナ名: lnmp-php
 再起動: 常に
 ボリューム: 
  - ./サイト:/www
 ネットワーク:
  ネット:
  ipv4_アドレス: 101.11.11.10

 nginx:
 ビルド: ./services/nginx
 ポート:
  - 「81:80」
  - 「444:443」
 コンテナ名: lnmp-nginx
 再起動: 常に
 ボリューム: 
  - ./サイト:/www
  nginx.conf は、以下のディレクトリにあります。
  - ./services/nginx/conf.d:/etc/nginx/conf.d:rw
 ネットワーク:
  ネット:
  ipv4_アドレス: 101.11.11.11

ネットワーク:
 ネット:
 ドライバー: ブリッジ
 ipam:
  設定:
  - サブネット: 101.11.11.0/20

services/nginx ファイルを編集する

nginx:1.17.0-alpineから

# インストールソースを更新します RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories

# タイムゾーンを上海に設定する RUN apk update && apk add --upgrade \
 && apk tzdata を追加 \
 && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
 && echo "アジア/上海" > /etc/timezone \
 && tzdata の apk

services/php ファイルを編集する

php:7.3.6-fpm-alpine3.9 より

# インストールソースを更新します RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories

# タイムゾーンを上海に設定する RUN apk update && apk add --no-cache tzdata autoconf gcc g++ make zlib-dev curl-dev\
 && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
 && echo "アジア/上海" > /etc/timezone \
 && tzdata の apk \
 && docker-php-ext-install mysqli pdo_mysql opcache \
 && pecl install grpc protobuf xdebug yaf yar swoole \
 && docker-php-ext-enable xdebug yaf yar swoole grpc protobuf 

lnmp 環境は基本的に上記で構築されています。次に、Php 解析を設定します。

services/nginx/nginx.confを変更します。必要に応じて変更できます。

ユーザー nginx;
ワーカープロセスは自動です。

error_log /var/log/nginx/error.log 警告;
pid /var/run/nginx.pid;


イベント {
 ワーカー接続 1024;
}


http {
 /etc/nginx/mime.types を含めます。
 デフォルトタイプ アプリケーション/オクテットストリーム;

 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/access.log メイン;

 ファイル送信オン;
 #tcp_nopush オン;

 キープアライブタイムアウト65;

 #gzip オン;

 /etc/nginx/conf.d/*.conf を含めます。
}

services/nginx/conf.dディレクトリ内のファイルを変更する

このディレクトリは各プロジェクトの構成ファイルであり、必要に応じて単一または複数のサービスを構成できます。

サーバー{
 聞く 80;
 server_name ローカルホスト;

 #文字セット koi8-r;
 #access_log /var/log/nginx/host.access.log メイン;

  nginx を /usr/share/html にコピーします。
 ルート/www;
 インデックス index.php index.html index.htm;


 #エラーページ 404 /404.html;

 # サーバーのエラーページを静的ページ /50x.html にリダイレクトします
 #
 エラーページ 500 502 503 504 /50x.html;
 場所 = /50x.html {
  ルート /usr/share/nginx/html;
 }

 # PHP スクリプトを 127.0.0.1:80 で listen している Apache にプロキシします
 #
 #場所 ~ \.php$ {
 # プロキシパス http://127.0.0.1;
 #}

 # PHP スクリプトを 127.0.0.1:9000 で待機している FastCGI サーバーに渡します
 #
 場所 ~ \.php$ {
 #ルートhtml;
  101.11.11.10:9000; をデフォルトとして設定します。
  fastcgi_index インデックス.php;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  fastcgi_params を含めます。
 }

 # Apacheのドキュメントルートが.htaccessファイルへのアクセスを拒否する
 # nginxのものと一致します
 #
 #場所 ~ /\.ht {
 # すべて拒否;
 #}
}

サービスを開始する

cd php && docker-compose up --build -d

上記の手順の実行時間は、ネットワーク速度と docker 構成によって異なります。一部の拡張機能は PHP でコンパイルされているため、必要に応じて削除することもできます。ブラウザから http://127.0.0.1:81 にアクセスします。phpinfo の出力情報が表示されたら、おめでとうございます。lnmp 環境がデプロイされました。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Docker で LNMP 環境を素早く構築する方法 (最新)
  • Dockerを使用して分散lnmpイメージを作成する
  • DockerでLNMPアーキテクチャを展開する方法
  • Dockerを使用して統合サービスlnmp環境を作成する
  • Dockerを使用してLNMP環境を構築する詳細な説明
  • DockerコンテナでLNMPをコンパイルする例

<<:  JavaScript で配列遅延評価ライブラリを実装する方法

>>:  MySQLインデックス最適化分析に関する簡単な説明

推薦する

JSは10進数を16進数に変換するサンプルコードを実装します

序文コードを書くと、時々基数変換の問題に遭遇します。一般的な変換には、2進数、8進数、10進数、16...

React+TypeScriptプロジェクト構築事例解説

React プロジェクトの構築は非常に簡単ですが、Typescript と組み合わせると、実際にはそ...

@Font-face の基本的な使い方と、すべてのブラウザと互換性を持たせる方法

@Font-face 基本紹介: @font-face は、Web ページにカスタム フォントを表示...

CSSスコープ(スタイル分割)の使用の概要

1. CSSスコープの使用(スタイル分割) Vue では、CSS スタイルを現在のコンポーネントでの...

UbuntuからMySQLを削除して再インストールする方法

まずmysqlを削除します: sudo apt-get remove mysql-*残ったデータをク...

Webpack での publicPath の使用法の詳細な説明

目次出力出力パス出力.publicPath webpack-dev-server の publicP...

MySQL を使用してポート 3306 を開いたり変更したり、Ubuntu/Linux 環境でアクセス許可を開く

オペレーティングシステム: Ubuntu 17.04 64ビットMySQL バージョン: MySQL...

角度コンテンツ投影の詳細な説明

目次単一コンテンツ投影マルチコンテンツ投影単一条件のコンテンツ投影アプリ-人物-htmlアプリ担当者...

VSCode の JS フォーマットでセミコロンを自動的に追加または削除する方法について

導入js コード文の末尾にセミコロンを追加しても追加しなくても問題ありません。一般的に、チームで開発...

Web面接でよくある質問:リフローとリペイントの原理と違い

目次ブラウザのレンダリングメカニズムリフローと再塗装リフロー逆流を引き起こす行為:再描画再描画を引き...

Nginxはクロスドメインの問題を解決し、サードパーティのページを埋め込む

目次序文困難クロスドメイン定義nginxの機能リバースプロキシ静的と動的の分離達成しようとする最終結...

11 の素晴らしい JavaScript コード リファクタリングのベスト プラクティスの概要

目次1. 関数の抽出2. 重複した条件付きスニペットを結合する3. 条件分岐文を関数に抽出する4. ...

CentOS 7にDockerをインストールする

Linuxシステムをお持ちでない場合は、ダウンロードとインストールについてはhttps://www....

CSS3 は反転可能なホバー効果を実現します

CSS3 は反転可能なホバー効果を実装します。具体的なコードは次のとおりです。 1.css /*基本...

JS のオブジェクトリテラルの詳細な説明

目次序文1. オブジェクト構築にプロトタイプを設定する1.1 __proto__ の使用における特殊...