Docker で php-nginx-alpine イメージをゼロから構築する方法

Docker で php-nginx-alpine イメージをゼロから構築する方法

これまでにも Docker 環境でいくつかのプロジェクトを実行したことはありますが、まだイメージをよく理解していません。また、インターネット上の既存のイメージには未使用のライブラリが多すぎるため、独自のイメージをゼロから構築することにしました。

Alpine Linuxがベースイメージです

docker pull gliderlabs/alpine

アルパイン Linux ミラー アドレス

最新のタグはバージョン3.8で、画像のサイズはわずか4Mで、非常に合理化されています。

画像を実行する

docker run -it gliderlabs/alpine

実行してみると、基本的な Linux ファイルシステムがあることがわかります。ここではデモはしませんが、興味のある方は自分で試してみることができます。

PHPとnginxをインストールする

apkアップデート
apk php7 nginx を追加

次に、必要に応じて、PHP 関連の拡張パッケージまたはその他の Linux 拡張パッケージのインストールを続行できます。

PHP7 ツールキットなどの拡張パッケージを検索するには、次のコマンドを使用します。

# apk 検索 php7

PHP拡張機能をインストールする

次のようにコードをコピーします
apk に php7-mysqli php7-pdo_mysql php7-mbstring php7-json php7-zlib php7-gd php7-intl php7-session php7-fpm php7-memcached を追加します

ディレクトリ構造

  • php7 ディレクトリ: /etc/php7
  • nginx ディレクトリ: /etc/nginx

php-fpmとnginxを起動する

# 最初に pid ファイルを作成してください。そうしないと、nginx は実行できません。mkdir /run/nginx 
/run/nginx/nginxpid をタッチします

# 最初にphpを実行し、次にnginxを実行します
php-fpm7 は、
nginx のディレクトリは /usr/sbin/nginx です。

この時点で、PHP と nginx が正常に動作していることがわかり、ミラーリング環境が基本的に完成しました。 次に、この画像を保存する方法を見てみましょう。

画像を作成する

別のターミナルを開き、docker ps を使用してイメージ ID を表示します。次のコマンドでイメージを保存できます。

docker commit -a "yisonli" -m "私の最初の php7-nginx" 9d9c6030e5e9 yisonli/php7-nginx-alpine:0.1

注: 9d9c6030e5e9 はイメージ ID、yisonli/php7-nginx-alpine は保存されたイメージ名、バージョンは 0.1 と定義されています。

新しく生成されたイメージを実行する

効果を確認するにはポート8080をバインドしてください

docker run -it -p 8080:8080 yisonli/php7-nginx-alpine:0.1

php-fpm と nginx を手動で起動すると、ブラウザで効果を確認できます。

http://127.0.0.1:8080/index.php

Docker 追加レコード

【共有フォルダ】

docker run -v `pwd`/www:/var/www/html -it -p 8080:8080 yisonli/php7-nginx-alpine:0.1

実行されていないコンテナを削除する

docker rm $(docker ps -a -q)

[Dockerfileを使用してイメージを構築する]

php7-nginx-alpine をビルドします。

0.2 は、この記事のプロセスを若干最適化して Dockerfile に書き込んだ上でビルドされており、起動スクリプトも付属しています。

Docker Hub にアップロードされており、ダウンロードして調査することができます。

画像にタグを追加する

docker タグ 9d9c6030e5e9 テスト/mytag

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

以下もご興味があるかもしれません:
  • Alpine Dockerイメージフォント問題解決操作
  • alpineをベースにdockerfileで作成したtomcatイメージの実装
  • alpineをベースにdockerfileで作成したクローラーScrapyイメージの実装
  • Docker Alpine イメージのタイムゾーン問題に対する完璧な解決策

<<:  星のフラッシュ効果を実現するjs

>>:  Vue コード強調プラグインの総合的な比較と評価

推薦する

ES6 配列のコピーおよびフィルメソッド copyWithin() および fill() の具体的な使用法

目次バッチコピー copyWithin()配列を埋めるメソッド fill()指数の計算方法については...

MySQL の結合フィールドの Concat()

目次1. はじめに2. 本文2.1 フィールドの連結2.2 フィールドでの算術計算の実行1. はじめ...

MySQL タイムスタンプ比較クエリで遭遇する落とし穴と解決策

目次タイムスタンプ比較クエリで遭遇する落とし穴タイムスタンプクエリ範囲の問題タイムスタンプ比較クエリ...

MySQL スロークエリ pt-query-digest スロークエリログの分析

1. はじめにpt-query-digest は、MySQL のスロー クエリを分析するためのツール...

MySQL explain クエリ命令情報の取得原理と例

explain はクエリ実行プラン情報を取得するために使用されます。 1. 文法次のように、sele...

MYSQL接続ポートが占有され、ファイルパスエラーが発生する問題を解決します

今朝、私は Wampserver を使用してローカルの win7 マシン上に PHP 環境を構築し、...

IE8 互換性について: X-UA-compatible 属性の説明

問題の説明:コードをコピーコードは次のとおりです。 <meta http-equiv=&quo...

Centos7.9 で独立したメール サーバーを構築するための詳細な手順

目次序文1. イントラネットDNS AレコードとMXレコードを構成する2. メールサーバの初期化設定...

ネイティブJSが様々なスポーツの均一な動きを実現

この記事では、ネイティブ JS で実装された均一なモーションを紹介します。その効果は次のとおりです。...

MySQL 5.7.17 でパスワードを忘れた場合の対処方法

1. my.iniファイルにskip-grant-tablesを追加し、MySQLサーバーを再起動し...

Vue 天気予報入門

この記事では、参考までに天気予報を実装するためのVueの具体的なコードを紹介します。具体的な内容は次...

CSS3で蓮の花が咲くアニメーション効果を実現

まずは効果を見てみましょう:この効果は非常に華やかに見えますが、原理は複雑ではありません。1 枚の花...

Alibaba Cloud Ubuntu 16.04 が IPSec サービスを構築

IPSec の概要IPSec (インターネット プロトコル セキュリティ): ネットワーク層と適用さ...

crontab 実行時間とシステム時間の不一致の解決方法

序文LINUX では、定期的なタスクは通常、cron デーモン プロセス [ps -ef | gre...

React+Antdはテーブルの追加、削除、変更の例を実装します

目次テーブル/index.jsテーブル/モデル/index.jsテーブル/モデル/モジュール/bas...