dockerカスタムイメージでphp7をビルドする方法

dockerカスタムイメージでphp7をビルドする方法

まず、簡単な Docker インストールを実行します。

イメージをカスタマイズするには、ベースイメージを選択して独自のイメージを構築する必要があります。実際、率直に言えば、基本的な定義を持つコンテナーにさまざまなプログラムをインストールするコマンドを実行して、いわゆる Dockerfile ファイルを生成することです。この場合、最初のステップは、操作するベースイメージとしてローカルイメージを見つけることです。

1


上図のように、centos イメージをベースに Dockerfile を構築してみましょう。

2 2番目のステップでは、Dockerfileファイルを保存するディレクトリを構築する必要があります。


ルート直下にdocker_demoディレクトリを作成し、Dockerfileファイルとインストールに必要なプログラムファイルを保存しておきます。カスタムPHP環境を構築したいので、PHP7の圧縮パッケージを作りましょう。

http://am1.php.net/get/php-7.0.0.tar.gz/from/this/mirror から取得します。 

名前を変更

これでPHPとnginxの両方ができました。COMPOSERに関しては、PHPが正常にインストールされたら自分で操作できます~~~

次のステップは、Dockerfile ファイルを書くことです。その前に、Dockerfile のキーワード形式を簡単に見てみましょう。

FROMはどの画像が基になっているかを表します

RUNインストールソフトウェアの使用

メンテナー イメージの作成者

CMD は、コンテナの起動時に実行されるコマンドです。ただし、Dockerfile には CMD コマンドを 1 つしか含めることができません。複数の CMD コマンドがある場合は、最後のコマンドのみが実行されます。

ENTRYPOINT コンテナの起動時に実行されるコマンド。ただし、Dockerfile には CMD コマンドが 1 つしか存在できません。コマンドが複数ある場合は、最後のコマンドのみが実行されます。

USER コンテナを実行するユーザー

EXPOSE コンテナ内のサービスによって公開されるポート。コンテナを実行するときにホストもポート マッピングを行う必要があります。

docker run -d -p 80:8080 centos6xxx

上記のコマンドは、コンテナ内のポート 8080 をホストのポート 80 にマッピングします。

ENVは環境変数を設定するために使用されます

ADD は、ホスト上のファイルをコンテナ内の対応するパスにコピーします。コンテナにコピーされたすべてのファイルとフォルダの権限は 0755 で、uid と gid は 0 です。ファイルが認識可能な圧縮形式である場合、docker が解凍を手助けします。ADD はイメージをビルドするときに 1 回だけ実行され、後でコンテナを実行するときに再ロードされることはありません。

例:

nginx-1.12.2.tar.gz /usr/local/srcを追加します。

VOLUME は、ローカル フォルダーまたは他のコンテナーのフォルダーをコンテナーにマウントできます。

WORKDIR 使用するディレクトリを切り替える (cd ディレクトリと同等)

ONBUILD で指定されたコマンドは、イメージのビルド時には実行されませんが、そのサブイメージ内で実行されます。

基本的な Dockerfile コマンドを学習した後、この環境を構築してみましょう。

docker プル CentOS

まずベースイメージをダウンロードします。この手順がある場合は無視してください。これが私のDockerfileです。

# ベースイメージ
# ベースイメージは docker.io/centos から

# MAINTAINERMAINTAINER [email protected] によって書かれました

# nginx-1.12.2.tar.gz を /usr/local/src に入れて nginx を解凍します。コンパイルとインストールを容易にするために、nginx と PHP の両方を事前にベースイメージの /usr/local/src ディレクトリに入れておいてください。ADD nginx-1.12.2.tar.gz /usr/local/src
php-7.0.0.tar.gz /usr/local/src を追加します。

# 必要なコマンドを実行する Nginx の複雑な依存パッケージをインストールします RUN yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel
実行 yum install -y libxslt-devel -y gd gd-devel GeoIP GeoIP-devel pcre pcre-devel
useradd -M -s /sbin/nologin nginxを実行します。

# ディレクトリを /usr/local/src/nginx-1.12.2 に変更します
ワークディレクトリ /usr/local/src/nginx-1.12.2

# nginxをコンパイルするコマンドを実行する
実行 ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-file-aio --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module && make && make install

#まずローカルMysqlをインストールする
yum install -y wgetを実行します
wget を実行します http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm
rpm -ivh mysql57-community-release-el7-8.noarch.rpm を実行します。
yum install -y mysql-serverを実行します。


#この時点で、PHP のインストールを開始します。通常どおり、コンパイルされた依存パッケージのインストールを開始します。RUN yum -y install epel-release
yum -y install libmcrypt-develを実行します。
実行 yum -y install libxml2 libxml2-devel openssl openssl-devel curl-devel libjpeg-devel libpng-devel freetype-devel
ワークディレクトリ /usr/local/src/php-7.0.0
#RUN ./CONFIGURE -PREFIX =/usr/local/php7 -with-config-file-path =/usr/local/php7/etc -with-config-file-scan-dir =/usr/php7/etc/php.d -with-mcrypt =/usr/ -fpm-user = nginx -with-fpm-group = nginx -with-gd-with-iconv -with-zlib -enable-xml -enable-sysvsem-enable-optimization -enable-mbregex -enable-mbstring-enable-ftp-gd-gdtf-flina ETES -With-XMlrpc -Enable-Zip -Enable-Soap- with with-getText-- enable-session -with-curl -with-jpeg-dir -with-freetype-dir -enable-opcache && make && && smak install

cp php.ini-production /usr/local/php7/etc/php.ini を実行します。

Dockerfile ファイルを正常にビルドしたら、docker build を使用してビルドします。

centos_lnmp:v1 を実行します。

末尾の . は、現在のディレクトリへの相対パスを表します。絶対パスを使用することもできます。

そして長い待ち時間

イメージが正常に構築されるまで、再度開始します

Docker イメージ


イメージが正常にビルドされたことがわかります(ビルドが失敗する可能性はわずかにありますが、その場合はコンテナとイメージを削除して再構築してください)。次に、

docker run -dt -p 80:80 centos_lnmp:v1 

成功したら、コンテナに入り、nginx php を設定できます。

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

以下もご興味があるかもしれません:
  • PHP7で導入された「??」と「?:」の違い
  • PHP7 匿名クラスの使用例
  • Plesk PHP7 で Oracle OCI8 拡張機能を有効にする方法の概要
  • Centos7.4 環境に lamp-php7.0 をインストールするチュートリアル
  • PHP7カーネルのリファレンスの詳細な説明
  • PHP7 echo および print ステートメントの例
  • Centos7 に php7 をコンパイルしてインストールし、php-fpm モードで Apache に接続する
  • Linux の PHP7 に Redis をインストールする方法
  • PHP7の孤立プロセスとゾンビプロセスとは何か

<<:  js データ型とその判定方法の例

>>:  MySql バッチ挿入の最適化 SQL 実行効率の例の詳細な説明

推薦する

JavaScript における async と await の使い方とメソッド

JS の async 関数と await キーワード 関数ヘルワールド() { 「こんにちは!美しい...

JS 非同期コードユニットテストの魔法 Promise

目次序文プロミスチェーンMDN エラー連鎖デフォルト処理略語非同期待機序文この記事を書いた理由は、ユ...

JS の効率的なマジック演算子の概要

JavaScript は現在、毎年新しいバージョンがリリースされており、より便利で効率的な新しい演算...

HTML(CSSスタイル仕様)を読む必要があります

CSS スタイル仕様1. クラスセレクター2. タグセレクター3. IDセレクター4. CSSスタイ...

Linux で MySQL データベースのインポートおよびエクスポート コマンドを実装する方法

1. mysqldump コマンドを使用してデータベースをエクスポートします (このコマンドのパスで...

Vue は PDF ファイルのオンライン プレビューを実装します (pdf.js/iframe/embed を使用)

序文現在、私はコースウェア PPT のオンライン プレビューを必要とする高品質のコースに取り組んでい...

Centos7 で crontab + シェル スクリプトによる定期的な自動ファイル削除の問題を解決する

問題の説明:最近、rsyncで毎回同期するデータ量が多いが、データベースのbakファイルを保持する必...

MySQL 5.7 における基本的な JSON 操作ガイド

序文プロジェクトのニーズにより、ストレージ フィールドは JSON 形式で保存されます。プロジェクト...

MySQL 8.0.13 で日付を 0000-00-00 00:00:00 に設定すると発生する問題を解決する

データベース操作を学び始めたばかりです。今日、データを保存していたところ、エラーが発生していることに...

CSS3アニメーションを使用して、小さい円から大きい円に拡大し、外側に広がる効果を実現する例

序文この記事では、CSS3アニメーションを使用して、円が小さいものから大きく拡大し、外側に広がる効果...

Nginx アクセス ログとエラー ログ パラメータの説明

例: nginx ログには、アクセス ログとエラー ログの 2 つの主な種類があります。アクセス ロ...

Reactの新バージョンのライフサイクルフック機能と使用方法の詳細な説明

旧ライフサイクルと比較して 3つのフックが廃止され、2つの新しいフックが追加されましたReact16...

Dockerを使用してシンプルなJava開発およびコンパイル環境を構築する方法の詳細な説明

Java 言語には多くのバージョンがあります。一般的に使用されている Java 8 に加えて、一部の...

シームレスなカルーセル効果を実現するネイティブ js

参考までに、ネイティブjsでカルーセル効果(シームレススクロール)を実現しています。具体的な内容は以...

dockerにros2をインストールするための詳細な手順

目次メイントピック1. UbuntuにDockerをインストールする2. DockerにROS2-F...