ドッカーは、分離されたマシン(コンテナ)を作成します。各コンテナには1つのプロセス(ApacheまたはMysqlなど)のみが含まれています。そして、Dockerfileはイメージを構築する方法を定義します。
ドッカーの構成は、コンテナの束の を実行、リンク、構成することができます。
あなたのケースでは、Apacheは「どこで」mysqlを知る必要があります。そして、あなたがApacheのコンテナを実行する前に、mysqlを起動する必要があります。
Dockerfile
は、アプリイメージの作成方法を定義します。アプリケーションイメージには、アプリケーションとWebブラウザが含まれています。
:
FROM apache:php5.6
ADD /src /var/www/awesome_project #add a project src code
ADD /config/apache/awesome_project.conf /etc/apache2/sites-available/ # add a configuration
# make any things
次に、あなたは、あなたがこれを行うには、2つの方法がありますが、イメージを作成している、とあなたがアプリケーションを実行する必要があります。この時点で、画像docker build my_app:latest .
を構築する必要があると
をDBにリンク
1)ネイティブドッカーのアプローチ。あなたは、DBコンテナ
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest
、あなたは私たちがアプリケーションを働いているこの時点でアプリのコンテナ(イメージが前に作成された)
docker run --name my_app --link some-mysql:mysql -P -d my_app
を実行する必要が後を実行します。この単純なことは、私たちが2つの長いコマンドを作り出す原因となります。別のマシンにアプリケーションをコピーする必要がある場合は、このコマンドを正確に繰り返す必要があります。
2)ドッカー作成方法では、コンテナを実行するための設定を作成できます。コンテナの正確な実行方法について説明しました。
シンプルdocker-compose.yml
設定この設定を使用すると、一緒に2コンテナを実行し、リンクし、それらを設定することができます。このアプローチ
db:
image: mysql
environment:
- MYSQL_USER=root
- MYSQL_PASSWORD=root
app:
image: my_app:latest
ports:
- 80:80
depends_on:
- db
environment:
# Database
- DB_USER_NAME=root
- DB_USER_PASSWORD=root
を説明します。
これは非常に簡単な例です。ドッカーを使用することの賛否両論は明らかではありませんが、5つ以上のコンテナがある場合は、作成せずに一緒に実行するのは難しいです。
したがって、 'Dockerfile'は全く必要ありませんか?私の質問に記載されているスタック全体を 'docker-compose.yml'だけでどのように定義すればよいですか? DockerfileはDocker設定の古い方法ですか、ディストリビューションのような低レベルの画像を作成するのに適した方法ですか? – Sfisioza
Dockerfileが必要です。 Dockerfileは特定のドッカーイメージを(低レベルで)作成する方法を定義します。 Docker composeは、コンテナを(画像から)一緒に実行、リンク、設定する方法を定義します –
私の質問からのセットアップに関して、両方のファイルの完全な例を提供してください。 – Sfisioza