GNU/Linux >> Linux の 問題 >  >> Ubuntu

Dockerを使用したLEMPスタックのDocker化-Ubuntuで作成

Docker-作成 マルチコンテナDockerアプリケーションを定義および管理するためのコマンドラインツールです。 ComposeはPythonスクリプトであり、pipコマンドを使用して簡単にインストールできます(pipは、PythonパッケージリポジトリからPythonソフトウェアをインストールするコマンドです)。 composeを使用すると、1つのコマンドで複数のDockerコンテナーを実行できます。これにより、サービスとしてのコンテナーを作成でき、開発、テスト、およびステージング環境に最適です。

このチュートリアルでは、docker-composeを使用してLEMPスタック環境(LEMP =Linux-Nginx-MySQL-PHP)を作成する方法を段階的に説明します。すべてのコンポーネントを異なるDockerコンテナーで実行し、Nginxコンテナー、PHPコンテナー、PHPMyAdminコンテナー、およびMySQL/MariaDBコンテナーをセットアップします。

前提条件

  • Ubuntuサーバー16.04-64ビット
  • root権限

ステップ1-Dockerをインストールする

このステップでは、Dockerをインストールします。 DockerはUbuntuリポジトリで利用できます。リポジトリを更新してからインストールするだけです。

ubuntuリポジトリを更新してアップグレードします:

sudo apt-get update
sudo apt-get upgrade

ubuntuリポジトリから最新のDockerをインストールします。

sudo apt-get install -y docker.io

Dockerを起動し、起動時に起動できるようにします:

systemctl start docker
systemctl enable docker

Dockerサービスが実行されています。

次に、以下のコマンドでdockerを使用してテストできます:

docker run hello-world

DockerからHelloworld。

ステップ2-Dockerのインストール-作成

最初のステップでは、Dockerをすでにインストールしています。次に、docker-composeをインストールします。

作成のインストールにはpython-pipが必要です。apt:

を使用してpythonとpython-pipをインストールします。
sudo apt-get install -y python python-pip

インストールが完了したら、pipコマンドを使用してdocker-composeをインストールします。

pip install docker-compose

次に、docker-composeバージョンを確認します:

docker-compose --version

Docker-composeがインストールされました。

ステップ3-Docker環境を作成して構成する

このステップでは、docker-compose環境を構築します。 root以外のユーザーを使用するため、今すぐそのユーザーを作成する必要があります。

' hakaseという名前の新しいユーザーを追加します '(必要に応じて、ここで独自のユーザー名を選択してください):

useradd -m -s /bin/bash hakase
passwd hakase

次に、新しいユーザーを「 docker」に追加します 'dockerをグループ化して再起動します。

usermod -a -G docker hakase
sudo systemctl restart docker

これで、ユーザーのハカセ 'sudoなしでdockerを使用できます。

次に、rootユーザーから、suを使用して「hakase」ユーザーにログインします。

su - hakase

作成環境用の新しいディレクトリを作成します。

mkdir lemp-compose/
cd lemp-compose/

これは私たちのdocker-compose環境であり、Dockerコンテナにあるすべてのファイルはこのディレクトリにある必要があります。 docker-composeを使用する場合は、「 docker-compose.yml」という名前の.ymlファイルが必要です。 '。

'lemp-compose'ディレクトリに、いくつかの新しいディレクトリとdocker-compose.ymlファイルを作成します。

touch docker-compose.yml
mkdir -p {logs,nginx,public,db-data}
  • ログ :Nginxログファイルのディレクトリ。
  • nginx :仮想ホストなどのNginx構成が含まれています。
  • 公開 :Webファイル、index.html、およびPHP情報ファイルのディレクトリ。
  • db-data :MariaDBデータディレクトリボリューム。

'ログにログファイルerror.logとaccess.logを作成します 'ディレクトリ。

touch logs/{error,access}.log

' nginxに新しいnginx仮想ホスト構成ファイルを作成します 'ディレクトリ:

vim nginx/app.conf

以下に構成を貼り付けます:

upstream php {
        server phpfpm:9000;
}

server {

        server_name 193.70.36.50;

        error_log "/opt/bitnami/nginx/logs/myapp-error.log";
        access_log  "/opt/bitnami/nginx/logs/myapp-access.log";

        root /myapps;
        index index.php index.html;

        location / {

                try_files $uri $uri/ /index.php?$args;
        }

        location ~ \.php$ {

                include fastcgi.conf;
                fastcgi_intercept_errors on;
                fastcgi_pass php;
        }

        location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
                expires max;
                log_not_found off;
        }
}

ファイルを保存してvimを終了します。

' publicに新しいindex.htmlファイルとPHP情報ファイルを作成します 'ディレクトリ。

echo '<h1>LEMP Docker-Compose</h1><p><b>hakase-labs</b>' > public/index.html
echo '<?php phpinfo(); ?>' > public/info.php

これで、次のような環境ディレクトリが表示されます。

tree

ステップ4-docker-compose.ymlファイルの構成

前のステップでは、コンテナに必要なディレクトリとファイルを作成しました。このステップでは、ファイル' docker-compose.ymlを編集します。 '。 docker-compose.ymlファイルで、LEMPスタックのサービス、各コンテナーのベースイメージ、およびDockerボリュームを定義します。

'ハカセにログインします 'ユーザーとdocker-compose.ymlを編集します vimでファイルする:

su - hakase
cd lemp-compose/
vim docker-compose.yml

-Nginxサービスを定義する

以下にnginx構成を貼り付けます:

nginx:
    image: 'bitnami/nginx'
    ports:
        - '80:80'
    links:
        - phpfpm
    volumes:
        - ./logs/access.log:/opt/bitnami/nginx/logs/myapp-access.log
        - ./logs/error.log:/opt/bitnami/nginx/logs/myapp-error.log
        - ./nginx/app.conf:/bitnami/nginx/conf/vhosts/app.conf
        - ./public:/myapps

その構成では、すでに定義済みです:

  • nginx :サービス名
  • 画像 :' bitnami / nginxを使用しています 'Docker画像
  • ポート :コンテナポートを公開 80 ホストポートへ80
  • リンク :リンク' nginx 'サービスコンテナから'phpfpm 'コンテナ
  • ボリューム :ローカルディレクトリをコンテナにマウントします。ログファイルディレクトリをマウントし、Nginx仮想ホスト構成をマウントし、Webルートディレクトリをマウントします。

-PHP-fpmサービスを定義する

Nginxブロックの下に構成を貼り付けます:

phpfpm:
    image: 'bitnami/php-fpm'
    ports:
        - '9000:9000'
    volumes:
        - ./public:/myapps

ここで定義しました:

  • phpfpm :サービス名を定義します。
  • 画像 :' bitnami / php-fpmを使用してphpfpmサービスのベースイメージを定義します '画像。
  • ポート :TCPポート 9000でPHP-fpmを実行しています ポートを公開する9000 ホストに。
  • ボリューム :Webルートディレクトリをマウントします' public 'から'myapps 'コンテナ上。

-MySQLサービスを定義する

3番目のブロックで、MariaDBサービスコンテナーの以下の構成を貼り付けます。

mysql:
    image: 'mariadb'
    ports:
        - '3306:3306'
    volumes:
        - ./db-data:/var/lib/mysql
    environment:
        - MYSQL_ROOT_PASSWORD=hakase-labs123

ここで、私たちが使用していることがわかります:

  • mysql :サービス名として。
  • 画像 :コンテナは' mariadbに基づいています 'Docker画像。
  • ポート :ポート 3306を使用するサービスコンテナ MySQL接続の場合、ポート 3306でホストに公開します 。
  • ボリューム db-data ディレクトリmysql
  • 環境 :環境変数を設定します' MYSQL_ROOT_PASSWORD 'コンテナのビルド時に実行されるDockerイメージへのmysqlルートパスワード。

-PHPMyAdminサービスの構成

最後のブロック、以下の構成を貼り付けます:

phpmyadmin:
    image: 'phpmyadmin/phpmyadmin'
    restart: always
    ports:
       - '8080:80'
    links:
        - mysql:mysql
    environment:
        MYSQL_USERNAME: root
        MYSQL_ROOT_PASSWORD: hakase-labs123
        PMA_HOST: mysql

'phpmyadmin' docker imageを使用しており、コンテナポートをマッピングしています 80 8080へ ホストで、コンテナを mariadbにリンクします コンテナ、restartを常に設定し、dockerイメージのいくつかの環境変数を設定します。これにはset' PMA_HOST '。

ファイルを保存してvimを終了します。

完全な例はgithubで見ることができます。

ステップ5-Docker-Composeを実行します

これで、docker-composeを実行する準備が整いました。注:docker-composeを実行する場合は、docker-composeプロジェクトディレクトリにいて、compose構成のymlファイルがあることを確認する必要があります。

以下のコマンドを実行して、LEMPスタックを起動します。

docker-compose up -d

-d: デーモンまたはバックグラウンドとして実行中

新しいコンテナが作成されたという結果が表示されます。以下のコマンドで確認してください。

docker-compose ps

これで、Nginx、PHP-fpm、MariaDB、PHPMyAdminを実行する4つのコンテナーができました。

ステップ6-テスト

ホスト上のdocker-proxyによって使用されているポートを確認しています。

netstat -plntu

Nginxコンテナの場合はポート80、MariaDBコンテナの場合はポート3306、php-fpmコンテナの場合はポート9000、PHPMyAdminコンテナの場合はポート8080が表示されます。

Webブラウザからポート80にアクセスすると、index.htmlファイルが表示されます。

http:// serverip-address /

PHP-fpmが実行されていることを確認し、Webブラウザからアクセスします。

http://serverip-address/info.php

MySQLシェルのMySQLコンテナにアクセスします。

docker-compose exec mysql bash
mysql -u root -p
TYPE MYSQL PASSWORD: hakase-labs123

次に、新しいデータベースを作成します。

create database hakase_db;
exit

MariaDB mysqlシェルコンテナにアクセスでき、新しいデータベース' hakase_dbを作成しました '。

次に、ポート8080でPHPMyAdminにアクセスします:http:// serverip-address:8080/。

PHPMyAdminログインページが表示されます。ユーザー名'rootと入力するだけです。 'およびパスワードは'hakase-labs123 '。

PMA_HOSTで定義されているmysqlコンテナに自動的に接続されます 環境変数。

[移動]をクリックします 'そして、' mysqlに接続されているphpmyadminダッシュボードが表示されます。 'コンテナ。

成功! LEMPスタックは、4つのコンテナーで構成されるdocker-composeセットアップの下で実行されています。

リファレンス

https://hub.docker.com/r/bitnami/nginx/

https://hub.docker.com/r/bitnami/php-fpm/

https://hub.docker.com/_/mariadb/

https://hub.docker.com/r/phpmyadmin/phpmyadmin/

https://docs.docker.com/compose/

https://github.com/yuzukiseo/hakase-labs/tree/master/lemp-compose


Ubuntu
  1. UbuntuにDockerでWordPressをインストールする方法

  2. Ubuntu18.04にLEMPスタックを使用してWordPressをインストールする方法

  3. Ubuntu20.04にLEMPスタックを使用してMagento2.4をインストールする方法

  1. Ubuntu14.04へのLEMPスタックのインストール

  2. Ubuntu16.04でNginxとPHP-FPMを使用してWordpressをDocker化する

  3. UbuntuでDockerを使用してONLYOFFICE8.9.0をインストールする方法

  1. Ubuntu18.04LTSでNginxMySQLとDockerComposeを使用してLaravelをDocker化する

  2. Ubuntu 18.04にPHPとMySQL(LEMPスタック)を使用してNginxをインストールする方法

  3. Ubuntu 20.04 LTSにPHPとMySQL(LEMPスタック)を使用してNginxをインストールする方法