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はイベントリスナーをイベント委任にバッチで追加します。詳細なプロセス

推薦する

MySQL パーティションテーブルの正しい使用方法

MySQL パーティションテーブルの概要数億、あるいは数十億ものレコードを格納するテーブルに遭遇する...

ネガティブマージン関数の紹介と使用方法の概要

1998 年の CSS2 勧告の時点で、テーブルは徐々に舞台から消え、歴史の中に記録されるようになり...

MySQL の日付と時刻関数の概要 (MySQL 5.X)

1. MySQLは現在の日付と時刻を取得する関数1.1 現在の日付 + 時刻 (日付 + 時刻) ...

CSS でホバー ドロップダウン メニューを実装する方法

いつものように、今日は非常に実用的な CSS 効果についてお話します。マウスがボタンに移動すると、ド...

デジタル時計効果を実現するJavaScript

この記事の例では、JavaScriptでデジタル時計効果を実装するための具体的なコードを参考までに共...

HTML にオーディオファイルを挿入してブラウザで再生する場合の互換性の問題

HTML にオーディオ ファイルを挿入した後 (mp3 ファイルを再生した後) に発生したいくつかの...

Docker で Spring-boot プロジェクトをデプロイするためのサンプル コード

1. 基本的な Spring-boot クイックスタート1.1 クイックスタート pom.xml は...

ウェブページ HTML 順序付きリスト ol と順序なしリスト ul

データを整理するためのリストWeb ページの表示を制御する多数の HTML タグを学習した後、読者は...

nginx プロキシでの複数の 302 応答の解決策 (nginx Follow 302)

proxy_intercept_errors と recursive_error_pages を使...

MySQL でテーブルスペースの断片化を解消する詳細な例

MySQL でテーブルスペースの断片化を解消する詳細な例断片化の原因(1)テーブルのストレージは断片...

React refsの詳細な紹介

1. 何ですかRefs 、コンピューターでは Resilient File System (ReF...

Server-U 14バージョンのインストールと使用方法

Server-Uソフトウェアの紹介Server-U は非常に強力なファイル マネージャーです。FTP...

Clickhouse Docker クラスターの展開と構成を例を使って説明します

目次前面に書かれた環境の展開Zookeeper クラスタの展開Clickhouse クラスターの展開...

Vue の get リクエストと post リクエストの違いのまとめ

このチュートリアルの動作環境: Windows 7 システム、vue 2.9.6 バージョン、DEL...