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 で時刻と日付の型を保存する際の選択問題を分析する

一般的なアプリケーションでは、timestamp、datetime、int 型を使用して時間形式を保...

Navicat Premier の MySQL へのリモート接続エラー 10038 の解決方法

MySQL へのリモート接続が失敗する場合は、次の理由が考えられます。 1. 若い男性/女性の方は、...

Windows が MySQL サービスを開始できず、エラー 1067 を報告する場合の解決策

突然、MySQLにログインすると、アクセスが拒否されたか、データベースに接続できないと表示されました...

CentOS 6 は Docker を使用して Zookeeper 操作例を展開します

この記事では、Docker を使用して Centos6 に Zookeeper をデプロイする方法に...

JS オブジェクトのコピー (ディープ コピーとシャロー コピー)

目次1. 浅いコピー1. Object.assign(ターゲット、ソース、ソース...) 2. スプ...

Viteは仮想ファイルの実装を導入します

目次背景仮想ファイルのインポート例書類タイプスクリプトのサポート要約する背景新しいプロジェクトで v...

MySQL 最適化における B ツリー インデックスの知識ポイントのまとめ

SQL を最適化する必要があるのはなぜですか?当然ですが、SQL ステートメントを記述する場合、次の...

WeChatアプレットはビデオプレーヤーのビデオコンポーネントを使用します

この記事の例では、WeChatアプレットのビデオプレーヤーコンポーネントの具体的なコードを参考までに...

地域のカスタムカラーのためのechars 3Dマップソリューション

目次質問伸ばす問題を解決する要約する質問プロジェクトの要件に従って、以下の州地図で個々の都市を(異な...

Facebook 出会い系サイトデザインのユーザー エクスペリエンス分析

<br />関連記事: Facebookの情報アーキテクチャの分析 元記事: http:...

JDBC を使用して Mysql データベースに接続する際に発生する可能性のある問題の概要

まず、いくつかの概念を明確にします。 JDBC: Javaデータベース接続、Oricalによって規定...

Vue3 AST パーサー - ソースコード分析

目次1. AST抽象構文木を生成する2. ASTのルートノードを作成する3. 子ノードの解析4. テ...

MySQL はリレーショナルデータベースですか?

MySQL はリレーショナル データベース管理システムです。リレーショナル データベースは、すべて...

Ace をベースにした Markdown エディターを共有する

エディターは 2 つのカテゴリに分かれていると思います。1 つは、即時レンダリングを実現するために左...

vue+elementuiは、共有箇条書きボックスの追加と変更の完全なコードを実装します。

目次1. 新しいII. 変更element-ui は、Ele.me のフロントエンド チームが開発者...