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

推薦する

TOM.COMのホームページリニューアルの経験

<br />何の警告もなく、cnBeta で TOM.COM の Web サイトが再設計...

Linux 編集の開始、停止、再起動の Springboot jar パッケージ スクリプトの例

序文springboot設定ファイルでは、設定ファイルの名前には独自の意味と用途があります。 dev...

jQueryはHTML要素の非表示と表示を実装します

商品を検索するときに、すべてのブランドまたは一部のブランドを表示するTaobaoの機能を真似してみま...

CSS 完全な視差スクロール効果

1. 何ですか視差スクロールとは、複数の背景レイヤーを異なる速度で動かすことで、3次元のモーション...

Vue Element フロントエンドアプリケーション開発の動的メニューとルーティングの関連付け処理

目次概要1. メニューとルーティング処理2. メニューとルートリスト3. ログインプロセスの処理概要...

Nginx 設定ファイルの詳細な説明と最適化の提案ガイド

目次1. 概要2. nginx.conf 1) 設定ファイルの場所2) ワーカープロセス3) イベン...

docker ログが取得できない問題の解決方法

毎日サービスをチェックしているときに、portainer からコンテナ ログを確認しようとしたところ...

ウェブサイトのコンテンツの一部を傍受するための iframe を実装するためのアイデアとコード

コードをコピーコードは次のとおりです。 <div スタイル="幅:630px;高さ:...

画像とテキストでHTTPヘッダーのあらゆる側面を理解する

HTTPヘッダーとはHTTP は「Hypertext Transfer Protocol」の略です。...

HTML テーブル マークアップ チュートリアル (43): テーブル ヘッダーの VALIGN 属性

垂直方向では、ヘッダーの配置を上、中央、下に設定できます。基本的な構文構文Top は上、Middle...

Dockerでコンテナを作成するときのディレクトリ権限

昨日プロジェクトを書いていた時に、MySQL の派生版である Percona を使う必要があったので...

Zabbixリモートコマンド実行の詳細な例

目次1つ。環境二。予防三つ。例Zabbix トリガーがしきい値に達すると、アラート メッセージの送信...

MySQL 条件付きクエリと使用法および優先順位の例の分析

この記事では、例を使用して、MySQL 条件クエリ and or の使用方法と優先順位を説明します。...

SQL実行ステップの詳細な分析

SQL実行ステップの詳細な分析まず、ステートメントが実行される順序を見てみましょう。 (8)選択する...

Unicode の一般的な文字の概要

初期のコンピューターのほとんどは ASCII 文字しか使用できませんでしたが、その後、主要な西洋のア...