Docker ビルド PHP 環境チュートリアル詳細説明

Docker ビルド PHP 環境チュートリアル詳細説明

Dockerのインストール

公式インストールスクリプトを使用して最新バージョンのDockerをインストールします

curl -sSL https://get.docker.com/ | sh

インストールが完了したら、次のコマンドでDockerデーモンを起動し、システムの起動時に自動的にロードされるようにします。

sudo サービス docker 開始
sudo chkconfig docker オン
## または
sudo systemctl dockerを起動します
sudo systemctl でdockerを有効にする

ユーザー(jerry)をDockerグループに追加する

sudo usermod -aG docker jerry

コマンドノート (centos)、docker イメージ 2233466866/lnmp に基づく

画像をダウンロード

docker pull 2233466866/lnmp

ベースディレクトリを作成する

mkdir -p /app/lnmp/default /docker/lnmp/data/mysql /docker/lnmp/conf/vhost /docker/lnmp/logs /docker/lnmp/temp /docker/lnmp/backup

コンテナ構成ファイルをローカルの対応するディレクトリにダウンロードします。

docker run -itd -v /sys/fs/cgroup:/sys/fs/cgroup:ro --privileged=true --name=lnmp 2233466866/lnmp
docker exec -it lnmp /bin/bash
docker cp lnmp:/etc/my.cnf /docker/lnmp/conf/my.cnf
docker cp lnmp:/usr/local/nginx/conf/nginx.conf /docker/lnmp/conf/nginx.conf
cp /docker/lnmp/conf/my.cnf /docker/lnmp/backup/my.cnf
/docker/lnmp/conf/nginx.conf を /docker/lnmp/backup/nginx.conf にコピーします。

基本設定の表示または変更(コードディレクトリ、ログ保存ディレクトリ、vhostディレクトリ設定の追加)

マイ.cnf

[mysqld]
データディレクトリ=/data/mysql
ソケット=/var/lib/mysql/mysql.sock
シンボリックリンク=0
ログエラー=/var/log/mysqld.log
pidファイル=/var/run/mysqld/mysqld.pid

nginx.conf

ユーザー www;
ワーカープロセスは自動です。
ワーカーCPUアフィニティは自動です。


ワーカーCPUアフィニティは自動です。
pid ログ/nginx.pid;

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

http {
  文字セット utf-8;
  server_tokens オフ;

  log_format main '$remote_addr - $remote_user [$time_iso8601] "$request" '
            '$status $body_bytes_sent "$http_referer" '
            '"$http_user_agent" "$http_x_forwarded_for"';

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

  クライアントの最大ボディサイズは20Mです。

  ファイル送信オン;
  キープアライブタイムアウト 20;

  gzip オン;
  gzip_vary オン;
  gzip_comp_level 1;
  gzip_types text/css application/javascript application/json image/png image/webp image/apng image/jpeg image/x-icon;

  autoindex_localtime オン

  エラーログ /logs/z_error.log;
  access_log /logs/z_$host.log メイン;

  サーバー{
    listen 80 デフォルト;
    ルート /www/default;
    500を返します。
  }
  vhost/*.conf をインクルードします。
}

テストコンテナを停止して削除する

docker stop lnmp
docker rm lnmp

コンテナを再作成する

docker run -dit \
-p 80:80 \
-p 443:443 \
-p 3306:3306 \
-p 9000:9000 \
-e TC="アジア/上海" \
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
-v /app/lnmp:/www \
-v /docker/lnmp/data/mysql:/data/mysql \
-v /docker/lnmp/conf/my.cnf:/etc/my.cnf \
nginx.conf を /docker/lnmp/conf/nginx.conf にコピーします。
-v /docker/lnmp/conf/vhost:/usr/local/nginx/conf/vhost \
-v /docker/lnmp/logs:/logs \
--privileged=true \
--name=lnmp \
2233466866/lnmp

mysql データベース設定 (/etc/my.cnf)

/bin/mysql_secure_installation
cat /var/log/mysqld.log|grep '一時パスワード'
パスワードを設定 = PASSWORD('123456');

php.ini 設定 (/usr/local/php7/lib/php.ini)

mysqli.default_socket = /var/lib/mysql/mysql.sock

Linux関連の設定変更

ログインできないユーザーwwwを追加する

グループ追加www
ユーザー追加 -M -g www -s /usr/sbin/nologin www

タイムゾーンを変更する (/etc/profile)

TZ='アジア/上海'; エクスポートTZ
cp /usr/share/zoneinfo/アジア/上海 /etc/localtime

マルチサイト構成

参照:

サーバー{
  聞く 80;
  server_name test.test;

  ^(.*)$ $scheme://www.test.test$1 を永久に書き換えます。
}
サーバー{
  聞く 80;
  サーバー名 www.test.test;

  ($time_iso8601 ~ "^(\d{4}-\d{2}-\d{2})") の場合 {
    $ttt $1 を設定します。
  }
  access_log /logs/$host-$ttt-access.log メイン;

  ルート /www/test;

  位置 / {
    インデックス index.php index.html index.htm;
  }

  場所 ~* \.php {
    fastcgi_params を含めます。
    fastcgi_index インデックス.php;
    127.0.0.1:9000; をデフォルトとして設定します。
    fastcgi_split_path_info ^(.+\.php)(.*)$;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    fastcgi_param SCRIPT_NAME $fastcgi_script_name;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  }

}

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

以下もご興味があるかもしれません:
  • Mac で docker を使って PHP 開発環境を構成する方法
  • PHP の Docker インストールと Nginx を使用したデプロイメントの例
  • DockerにPHP拡張機能をインストールする手順の説明
  • Docker を使用して OpenLDAP+phpLDAPadmin 統合ユーザー認証を構築する方法
  • docker に php-fpm サービス/拡張機能/構成をインストールする詳細なチュートリアル
  • PHP環境構築におけるDockerの柔軟な実装
  • LNMP と phpMyAdmin を Docker にデプロイする方法
  • PHP は docker を使用してワーカーマンを実行するケースの説明

<<:  MySQLのインストール時に発生する可能性のある問題

>>:  JavaScriptはイベントリスナーをイベント委任にバッチで追加します。詳細なプロセス

推薦する

nodejs で worker_threads を使用して新しいスレッドを作成する方法

導入前の記事で述べたように、NodeJS には 2 種類のスレッドがあります。1 つは、ユーザー リ...

Linux で open-vswitch をインストールおよびアンインストールする方法

1. ソースコードからovsをコンパイルしてインストールします。依存関係をインストールします: # ...

Windows サーバー ポートを開きます (例としてポート 8080 を使用します)

ポートとは何ですか?私たちが通常参照するポートは、物理的な意味でのポートではなく、具体的には TCP...

Dockerコンテナ監視の原理とcAdvisorのインストールおよび使用方法

本番環境におけるコンテナの稼働状況を監視することは非常に重要です。監視を通じて、コンテナの稼働状況を...

Nodeはリクエスト追跡にasync_hooksモジュールを使用します

async_hooks モジュールは、Node.js バージョン 8.0.0 に正式に追加された実験...

Vue px to rem 構成の詳細な説明

目次方法1 1. 構成とインストールの手順:方法2方法3要約する方法1 1. 構成とインストールの手...

Vue.jsのレンダリング関数の使い方の詳しい説明

Vue では、ほとんどの場合、テンプレートを使用して HTML を作成することを推奨しています。ただ...

Linux 仮想メモリ設定のチュートリアルと実践

仮想メモリとは何ですか?まずはWikipediaからの紹介文をそのまま引用します。仮想メモリは、コン...

テキストエリアのテキスト入力領域に改行を実装する方法

textarea 入力領域でテキストを折り返す場合は、<br/> と入力すると <...

シンプルなウェブ計算機を実装するJavaScript

背景私は新しいプロジェクト チームに配属されたので、プロジェクトでは js を使用する必要があります...

Tomcat を使用して IntelliJ IDEA によってデプロイされたプロジェクトの場所はどこですか?

IntelliJ IDEA が Tomcat を使用して Javaweb プロジェクトをデプロイし...

Axios はリクエストをキャンセルし、重複リクエストを回避します

目次起源現状リクエストをキャンセル cancelTokenリクエスト方法の変更重複したリクエストを避...

MySQL 最適化チュートリアル: 大規模なページングクエリ

目次背景制限の最適化最適化方法1. カバーインデックスを使用する2. サブクエリの最適化3. 遅延連...

MySQL の垂直テーブルを水平テーブルに変換する方法と最適化のチュートリアル

1. 縦型テーブルと横型テーブル垂直テーブル: テーブル内のフィールドとフィールド値はキーと値の形式...

CentOS 6.8 に MySQL 8.0.18 をインストールするチュートリアルの簡単な分析 (RPM 方式)

今日は、CentOS 6.8 サーバーに MySQL 8.0.18 をインストールする方法を記録しま...