RancherOSにRancherサーバーをインストールする
概要RancherOSは、システムサービスを実行するためのPID 0としてシステムDockerデーモンを実行する、信じられないほど軽量なオペレーティングシステム(わずか約60 MB)です。
PHPアプリケーションは通常、Webサーバー、リレーショナルデータベースシステム、および言語インタープリター自体で構成されます。このチュートリアルでは、Dockerを使用して完全なPHPアプリケーションスタックを活用します。これは、Nginx(ウェブサーバー)、MySQL(データベースシステム)、およびPHPのコンテナーを構築してオーケストレートする詳細なチュートリアルです。
このチュートリアルでは、データベースから都市のリストを読み取り、それをWebページに表示する単純なアプリケーションを作成します。この方法で、基本的な、ただし機能するPHPアプリケーションを示します。
このガイドでは、Docker-CEがすでにインストールされており、少なくともdockerの実用的な知識があることを前提としています。そのためには、次のチュートリアルを確認してください。
実際のDockerベースのアプリケーションは通常、いくつかのコンテナで構成されます。これらを手動で管理することは、非常に厄介で面倒な作業になる可能性があります。そこで登場するのがdocker-composeです。シンプルなyaml
構成ファイルを使用して、多数のコンテナーを管理するのに役立ちます。
docker-composeをインストールします。
curl -L https://github.com/docker/compose/releases/download/1.19.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
この例で必要なすべてのファイルを保持するフォルダーを作成し、その中にフォルダーを作成しますcd
。これからは、これが作業ディレクトリであり、すべてのコマンドはこのフォルダ内で実行され、すべてのパスはそれを基準にして参照されます。このフォルダは後でとして参照される場合がありますWORKING_DIR
。
mkdir ~/docker
cd ~/docker
さらに3つのフォルダを作成します。
mkdir php nginx app
php
フォルダは、我々のカスタムPHPのイメージを構築する場所、あるnginx
フォルダは、当社独自のnginxのイメージのために必要なファイルを保持し、app
我々は、サンプルアプリケーションのソースコードと構成を置くされる場所フォルダです。
この例では、を使用php-fpm
してNginx Webサーバーに接続します。公式のPHPベースイメージを使用します。ただし、データベースにアクセスできるように、いくつかの拡張機能をインストールして有効にする必要もあります。php
フォルダ内にという名前のファイルを作成しDockerfile
、次のコンテンツをその中に入れます。
FROM php:7.1-fpm-alpine3.4
RUN apk update --no-cache \
&& apk add --no-cache $PHPIZE_DEPS \
&& apk add --no-cache mysql-dev \
&& docker-php-ext-install pdo pdo_mysql
公式のPHPイメージのアルパインバージョンを使用していることに注意してください。Alpineは、非常に小さなフットプリントを提供することにより、コンテナーを対象とした非常に小さなディストリビューションです。また、コマンドの使用に注意してください。docker-php-ext-install
公式のPHPイメージは、PHP拡張機能のインストールと構成のプロセスを容易にするためにこのコマンドを提供しています。
では、次のコードを発行して(この内でWORKING_DIR
)、このDockerイメージをビルドしましょう。
docker build -t vultr-php php/
docker-compose.yml
ファイルすでに述べたように、docker-compose
単純な構成ファイルを使用して多数のコンテナーを管理できます。この構成ファイルの名前は通常docker-compose.yml
です。このファイルをapp
フォルダ内に作成します。
touch app/docker-compose.yml
次の内容をこのファイルに入れます。
version: '2'
services:
php:
image: vultr-php
volumes:
- ./:/app
working_dir: /app
この構文について説明します。まず、最初の行に注意してください。
version: '2'
docker-compose.yml
使用する構成ファイルのバージョンを指定します。次の行では、サービス、つまりプロビジョニングするコンテナを指定しています。
services:
php:
image: vultr-php
volumes:
- ./:/app
working_dir: /app
すべてのサービスにはservices
ブロック内に特定のキーがあることに注意してください。ここで指定した名前は、後でこの特定のコンテナーを参照するために使用されます。また、php
構成の中で、コンテナーの実行に使用されるイメージを定義していることにも注意してください(これは、以前に構築したイメージです)。ボリュームマッピングも定義します。
volumes:
- ./:/app
これはdocker-compose
、現在のディレクトリ(./
)を/app
コンテナ内のディレクトリにマップするように指示します。最後の行は、/app
コンテナー内のフォルダーを作業ディレクトリとして設定します。これは、コンテナー内の今後のすべてのコマンドがデフォルトで実行されるフォルダーであることを意味します。
これで、コンテナーを調整できます。
cd ~/docker/app
docker-compose up -d
次のコマンドを実行して、PHPコンテナが実行されたことを確認できます。
docker ps
app
引き続きフォルダー内で、コマンドを使用して、定義されたサービスコンテナー内で任意のコマンドを実行できますdocker-compose
。
docker-compose exec [service] [command]
[service]
プレースホルダは、サービスキーを指します。私たちの場合、これはでしたphp
。コンテナー内でコマンドを実行して、PHPのバージョンを確認しましょう。
docker-compose exec php php -v
次の出力が表示され��す。
PHP 7.1.14 (cli) (built: Feb 7 2018 00:40:45) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
PHPコンテナと同様に、Webサーバー用のカスタムイメージを作成する必要があります。ただし、この場合は、の構成を提供するだけですvirtual host
。あなたが私たちの中にいることを確認し、フォルダ内にWORKING_DIR
作成しDockerfile
てnginx
ください:
cd ~/docker
touch nginx/Dockerfile
これに次の内容を入れますDockerfile
:
FROM nginx:1.13.8-alpine
COPY ./default.conf /etc/nginx/conf.d/default.conf
AlpineベースのデフォルトのNginxイメージを使用しています。このDockerファイルでは、構成ファイルをアプリケーションのセットアップにコピーするだけです。このイメージをビルドする前に、構成ファイルを作成します。
touch nginx/default.conf
次に、このコンテンツを入力します。
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /app;
index index.php;
#server_name server_domain_or_IP;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
try_files $uri /index.php =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
このfastcgi_pass php:9000
行では、PHPコンテナーを構成ファイルのservice
ブロック内の名前で参照していることに注意してくださいdocker-compose.yml
。内部的にdocker-compose
ネットワークを作成し、定義された各サービスのホスト名としてサービス名を割り当てます。Nginxイメージをビルドできます。
docker build -t vultr-nginx nginx/
docker-compose.yml
次にapp/docker-compose.yml
ファイルを更新します。
version: '2'
services:
php:
image: vultr-php
volumes:
- ./:/app
working_dir: /app
web:
image: vultr-nginx
volumes:
- ./:/app
depends_on:
- php
ports:
- 80:80
新しいサービスを追加しただけです。次の点を除いて、構成はほぼ同じです。
depends_on:
- php
ports:
- 80:80
NginxコンテナーがPHPサービスを完全に初期化する必要があるdepends_on
場合、オプションでこの要件を強制します。ports
構成キーは、コンテナポートにホストポートをマッピングし、ここで我々はポートをマッピング80
ポートにホストで80
コンテナインチ
次にindex.php
、app
フォルダ内にというファイルを作成し、その中に以下を入れます。
<?php phpinfo();
80
ファイアウォールを介してポートにアクセスできることを確認し、次を実行します。
cd ~/docker/app
docker-compose up -d
もう一度、サービスが稼働していることを再確認します。
docker ps
ブラウザを開き、にアクセスします[vultr-instance-ip]
。次のコマンドを実行して、VultrインスタンスのIPアドレスを確認できます。
hostname -I
PHP情報ページが表示されます。
公式のMySQLイメージでは、単純な環境変数を使用してコンテナーを構成できます。これはenvironment
、サービスブロック定義内のオプションで実行できます。~/docker/app/docker-compose.yml
ファイルを次のように更新します。
version: '2'
services:
php:
image: vultr-php
volumes:
- ./:/app
working_dir: /app
web:
image: vultr-nginx
volumes:
- ./:/app
depends_on:
- php
ports:
- 80:80
mysql:
image: mysql:5.7.21
volumes:
- ./:/app
- dbdata:/var/lib/mysql
environment:
- MYSQL_DATABASE=world
- MYSQL_ROOT_PASSWORD=root
working_dir: /app
volumes:
dbdata:
これで、データベースの新しいサービスを定義しました。行に注意してくださいdbdata:/var/lib/mysql
。これ/var/lib/mysql
により、Dockerが管理する永続ボリュームにコンテナーのパスがマウントされます。これにより、コンテナーが削除された後もデータベースデータが保持されます。ファイルの最後にあるように、このボリュームはトップレベルのブロックで定義する必要があります。
新しい構成を調整する前に、サンプルのMySQLデータベースをダウンロードしましょう。MySQLの公式ドキュメントに は、サンプルデータベースがいくつか用意されています。有名な世界データベースを使用します。このデータベースは、国と都市のリストを提供します。このサンプルをダウンロードするには、アプリフォルダー内で以下を実行します。
curl -L http://downloads.mysql.com/docs/world.sql.gz -o world.sql.gz
gunzip world.sql.gz
次に、コンテナーを調整します。
docker-compose up -d
すでにお気づきかもしれませんが、docker-compose up
コマンドはまだ開始されていないコンテナーのみを開始します。docker-compose.yml
ファイルと実行中のコンテナの現在の構成との違いを確認します。
もう一度、MySQLコンテナが起動したことを確認します。
docker ps
次に、worldデータベースにデータを入力します。
docker-compose exec -T mysql mysql -uroot -proot world < world.sql
データベースから直接データを選択することで、データベースにデータが入力されたことを確認できます。最初に、コンテナー内のMySQLプロンプトにアクセスします。
docker-compose exec mysql mysql -uroot -proot world
MySQLプロンプトで、次を実行します。
select * from city limit 10;
都市のリストが表示されます。MySQLプロンプトを終了します。
mysql> exit
これで、必要なすべてのコンテナーが稼働しているので、サンプルアプリケーションに集中できます。app/index.php
ファイルを次のように更新し ます。
<?php
$pdo = new PDO('mysql:host=mysql;dbname=world;charset=utf8', 'root', 'root');
$stmt = $pdo->prepare("
select city.Name, city.District, country.Name as Country, city.Population
from city
left join country on city.CountryCode = country.Code
order by Population desc
limit 10
");
$stmt->execute();
$cities = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Vultr Rocks!</title>
</head>
<body>
<h2>Most Populous Cities In The World</h2>
<table>
<thead>
<tr>
<th>Name</th>
<th>Country</th>
<th>District</th>
<th>Population</th>
</tr>
</thead>
<tbody>
<?php foreach($cities as $city): ?>
<tr>
<td><?=$city['Name']?></td>
<td><?=$city['Country']?></td>
<td><?=$city['District']?></td>
<td><?=number_format($city['Population'], 0)?></td>
</tr>
<?php endforeach ?>
</tbody>
</table>
</body>
</html>
[vultr-instance-ip]
Webブラウザーでアクセスすると、世界で最も人口の多い都市のリストが表示されます。おめでとうございます。Dockerを使用して完全に機能するPHPアプリケーションをデプロイしました。
このチュートリアルでは、完全に機能するPHPアプリケーションを構成する方法を段階的に説明しました。PHPとNginxのカスタムイメージを作成し、コンテナーを統合するようにdocker-composeを構成しました。このセットアップは非常に基本的でシンプルですが、実際のシナリオを反映しています。
このガイドでは、ローカルでイメージを作成してタグ付けしました。より柔軟な設定のために、これらのイメージをDockerレジストリにプッシュできます。公式のdockerレジストリにプッシュするか、独自のdockerレジストリをセットアップすることもできます。いずれの場合でも、これにより、1つのホストでイメージを構築し、別のホストでそれらを使用できます。
の詳細な使用方法docker-compose
については、公式ドキュメントを参照してください。
アプリケーションの要件と使用するPHPフレームワークによっては、拡張機能を追加したい場合があります。これはDockerfile
、カスタムPHPイメージのビルドに使用されるを変更することで簡単に実行できます。ただし、一部の拡張機能は、コンテナにインストールするために追加の依存関係を必要とします。PHP公式ドキュメントの拡張機能のリストを参照して 、各拡張機能の基本的な要件を確認してください。
概要RancherOSは、システムサービスを実行するためのPID 0としてシステムDockerデーモンを実行する、信じられないほど軽量なオペレーティングシステム(わずか約60 MB)です。
はじめにDockerは、コンテナーとして実行されるプログラムをデプロイできるアプリケーションです。それは人気のあるGoプログラミング言語で書かれました
別のシステムを使用していますか?Dockerは、コンテナーとして実行されるプログラムをデプロイできるアプリケーションです。それは人気のある囲碁programminで書かれました
この記事では、Dockerコンテナー内にノードアプリケーションをデプロイする方法を示します。注:このチュートリアルでは、Dockerがインストールされており、
はじめにこのガイドでは、複数のAlpine Linux 3.9.0サーバーとPortainerを使用してDockerスウォームを作成および構成する方法について説明します。ご注意ください
Harbourは、Dockerイメージを格納および配布するオープンソースのエンタープライズクラスのレジストリサーバーです。HarbourはオープンソースのDockerディストリビューションを拡張しますb
Kubernetesは、サーバーのクラスタ全体でコンテナ化されたアプリケーションを管理するためにGoogleが開発したオープンソースのプラットフォームです。それは10年に基づいて構築され、
別のシステムを使用していますか?はじめにRancherは、コンテナーを実行し、プライベートコンテナーサービスを構築するためのオープンソースプラットフォームです。牧場主がベース
概要この記事は、kubernetesクラスターをkubeadmですぐに稼働できるようにすることを目的としています。このガイドでは、2台のサーバーを
この記事では、CoreOSにdocker-composeをインストールする方法について説明します。CoreOSでは、/ usr /フォルダーは不変なので、標準の/ usr / local / binパスは使用できません。
別のシステムを使用していますか?はじめにRancherは、コンテナーを実行し、プライベートコンテナーサービスを構築するためのオープンソースプラットフォームです。牧場主がベース
別のシステムを使用していますか?Dockerは、仮想コンテナー内でのソフトウェアのデプロイメントを可能にするアプリケーションです。それは囲碁プログラムで書かれました
LXCコンテナー(Linuxコンテナー)は、単一のホスト上で複数の分離されたLinuxシステムを実行するために使用できるLinuxのオペレーティングシステム機能です。テス
別のシステムを使用していますか?はじめにSentryは、エラー追跡のためのオープンソースのソリューションです。Sentryは例外やその他の有用なメッセージをあちこちで追跡します
別のシステムを使用していますか?はじめにDocker Swarmは、個々のサーバーをコンピューターのクラスターに変えます。スケーリング、高可用性、
このチュートリアルでは、Dockerの基本的な使い方について説明します。Dockerがすでにインストールされていると思います。このチュートリアルの手順は、
Webアプリケーションを実行する場合、通常、マルチスレッドを使用するようにソフトウェアを変換することなく、リソースを最大限に活用したいと思いますo
私たちは皆、アプリケーションコンテナーを作成、管理、および複数のマシンに分散するプラットフォームであるDockerを知っています。Docker Inc.が提供するサービスt
前提条件Dockerエンジン1.8以降。最低4GBのディスク容量。4GB以上のRAM。ステップ1. DockerをインストールするSQL-Serverをインストールするには、Docker mus
ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。
最近、Appleは問題を修正するための補足アップデートであるmacOS Catalina 10.15.4をリリースしましたが、このアップデートにより、Macマシンのブリックにつながる問題がさらに発生しているようです。詳細については、この記事をお読みください
原子力は、過去の出来事のために私たちが決して尊重しないことを常に軽蔑していますが、それは必ずしも悪ではありません。詳細については、投稿をお読みください。
これを読んで、人工知能が小規模企業の間でどのように人気を博しているか、そして人工知能がどのように成長し、競合他社に優位に立つ可能性を高めているかを理解してください。
私たちのコンピューターは、ジャーナリングファイルシステムと呼ばれる組織化された方法ですべてのデータを保存します。これは、検索を押すとすぐにコンピューターがファイルを検索して表示できるようにする効率的な方法です。https://wethegeek.com/?p = 94116&preview = true
ビッグデータと人工知能は流行語ですが、それらがどのように相互に関連しているか知っていますか?さて、この記事を最後まで読んで、同じことを知ってください。
LiteCartは、PHP、jQuery、およびHTML 5で記述された無料のオープンソースのショッピングカートプラットフォームです。シンプルで軽量、使いやすいeコマースソフトウォー
NFSはネットワークベースのファイルシステムであり、コンピューターはコンピューターネットワークを介してファイルにアクセスできます。このガイドでは、NFを介してフォルダーを公開する方法について説明します
別のシステムを使用していますか?Matomo(旧Piwik)は、Google Analyticsのオープンな代替手段であるオープンソースの分析プラットフォームです。Matomoのソースはoでホストされています
HTTPライブストリーミング(HLS)は、Apple Inc.によって実装された非常に堅牢なストリーミングビデオプロトコルです。HLSは、ファイアウォール、プロキシ、