ホームページ  >  記事  >  バックエンド開発  >  docker を使用して統合サービス lnmp 環境を作成する

docker を使用して統合サービス lnmp 環境を作成する

不言
不言オリジナル
2018-04-09 15:14:231900ブラウズ

この記事では、主に docker を使用して統合サービス lnmp 環境を作成する方法を紹介し、必要な友人に参考にしてもらいたいと思います。

docker の基本コマンドをマスターした後、docker を使用して実際のサポート環境を作成したいと思い、最もよく使用される lnmp 環境をテストに使用しました。サポート環境の実行順序は、mysql->php->nginx です。その理由を以下に説明します。

1. MySQL

特に指定がない限り、サービスで使用されるイメージはすべて公式イメージから取得されます。中小企業や個人開発者にとっては、公式イメージの方が安全であり、心配と労力を節約できます。

# 拉取镜像
$ docker pull mysql
# 运行MySQL
$ docker run MySQL --name mysql -d \
    -p 3306:3306 \
    -v /var/lib/mysql/:/var/lib/mysql/ \
    -e MYSQL_ROOT_PASSWORD=ilovec \

上記の操作パラメータについて順に説明します

  1. --name: 指定した実行中のコンテナの名前

  2. -d: バックグラウンドでコンテナを実行します

  3. - p: ホスト コンテナのポートとのマッピング

  4. -v: コンテナをローカルディレクトリにマッピング

  5. -e: コンテナを実行するための環境変数を指定

2.PHP

公式イメージ php -fpm をプルし、必要な PHP バージョンに応じてダウンロードします。ただし、一般的に使用される一部の PHP パッケージは公式イメージに含まれていないため、dockerfile を使用して再構築する必要があります。次の 2 つをインストールします。 Dockerfile 内の PHP 拡張パッケージ mysqli および pdo。

FROM php:7.1-fpm
# Install modules
RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli
RUN docker-php-ext-install pdo_mysql
CMD ["php-fpm"]

php-fpmを実行します

このパラメータは、コンテナ間の接続に非常に役立ちます。現在のコンテナ 対応するコンテナに接続できるドメイン名解決を追加します。たとえば、上記の php-fpm で mysql にリンクすると、php-fpm 内の php プログラムを実行するだけで mysql コンテナに接続できます。 mysql 文字列 Cat /etc/hosts では、内部の解析レコードを確認できます。


docker run -d -p 9000:9000 \
  --name php-fpm \
  --link mysql \
  -v /data/wwwroot/:/data/wwwroot/ \
  php-fpm

3.Nginx

nginx は php ファイルを解析するために 127.0.0.1:9000 ポート経由で php-fpm に接続する必要があるため、次のコマンドで nginx を実行します。リンクから php-fpm にアクセスします。


172.17.0.2 mysql b41d2569c06d

nginx がファイルを解析するとき、リクエストが静的ファイルの場合、リクエストが php ファイルの場合、nginx コンテナ内のファイルをクライアントに直接返すことに注意してください。リクエストは php-fpm に転送され、php-fpm はローカルで解析用の php ファイル (php-fpm コンテナ自体のファイル) を見つけます。

上記の 3 つのサービスの起動コマンドを順番に実行した後、共通の lnmp を構築できます。ただし、サービスを実行するたびに上記のコマンドを実行するのは少し面倒です。 docker-compose コマンドを使用して一元管理できます。

docker-compose

を使用するには、lnmp ディレクトリを作成し、lnmp ディレクトリに docker-compose.yml を作成し、次のコマンドを入力して統合環境を管理するだけです。

実際、コマンドの名前から各コマンドの意味を簡単に知ることができます。


バージョン: docker-compose は開発ツールであるため、各バージョンの命令が異なる可能性が非常に高いため、docker-compose 命令の該当するバージョンを最初に宣言する必要があります。


image: サービスが実行されるイメージを指します。


depends_on: これは、ソフトウェアが依存するソフトウェアを指定します。実際、ソフトウェアが実行される順序も宣言します。


docker run -d -p 80:80 \
  --name nginx \
  --link php-fpm \
  -v /data/wwwroot/:/data/wwwroot/ \
  nginx

その後、この lnmp ディレクトリで compose 関連のコマンドを実行することで制御できます。

version: '2'

services:
  mysql:
    image: "mysql"
    ports:
      - "3306:3306"
    volumes:
      - /var/lib/mysql/:/var/lib/mysql/
    environment:
      MYSQL_ROOT_PASSWORD: password
      
  php-fpm:
    image: "php-fpm"
    depends_on:
      - mysql
    links:
      - mysql
    ports:
      - "9000:9000"
    volumes:
      - /data/wwwroot/:/data/wwwroot/

  nginx:
    image: "nginx"
    depends_on:
      - php-fpm
    links:
      - php-fpm
    volumes:
      - /data/wwwroot/:/data/wwwroot/
    ports:
      - "80:80"

関連する推奨事項:

Docker で PHP 開発環境を構築する


以上がdocker を使用して統合サービス lnmp 環境を作成するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。