0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Dockerの知識を整理】DockerとDocker Composeを使ったWebアプリの開発環境構築について

Posted at

はじめに

本記事を読んでほしい方

  • Docker, Docker Composeを学んだが知識があまり整理されていない初学者

本記事ではDockerとDocker Composeを使ったWebアプリの開発環境構築について、知識を整理するため簡単に説明していきます。Dockerfileやdocker-compose.ymlの詳細な記述の仕方については他記事を参考にしてください。

Dockerとは?

Webアプリケーションを開発する際の開発環境、本番環境、テスト環境を構築できる仕組みのことです。プロジェクト単位で環境構築を行うため、ある人の開発マシンではプログラムが動くけど、ある人は動かないという問題が発生しないという利点があります。Linuxの仮想コンテナを立ち上げ、その中で開発を行います。

Docker, Docker Composeを使った Webアプリの開発環境構築

1つのコンテナには1つのアプリケーションのみ配置できるという原則があります。しかし、通常Webアプリケーションの開発環境を作るには、アプリケーションのフレームワーク+データベース等、複数のコンテナを用意しなければなりません。(例:Ruby on Rails + PostgreSQL)
そこで、Docker Composeを活用するのです。Docker Composeは、Yamlファイルの内容に沿って、複数のコンテナを立ち上げることができます。

Dockerでの開発環境の構築の際に必要なファイルは以下の通りです。

  • Dockerfile (Docker imageを作成し、コンテナを起動するためのファイル)
  • docker-compose.yml (コンテナの立ち上げ方について記述するためのファイル)
  • database.yml (データベースを別で使用する場合、編集するファイル)

実際にDocker + Docker Composeを使った環境構築の方法を説明していきます。まず、Dockerを使って開発環境を構築するにはコンテナを立ち上げる必要があります。このコンテナというものは、Docker imageから作られます。そしてこのDocker imageを作るものがDockerfileです。

わかりにくいと思うので、下に図示します。(DockerfileからDocker imageを作り、Docker imageからコンテナを作ります)
また、DockerfileからDocker imageを作る際は、docker-compose buildコマンド、Docker imageからコンテナを立ち上げるのがdocker-compose upコマンドを使います。
コンテナ作成イメージ図

こちらの一連の流れを行うために、上記のDockerfile, docker-compose.ymlを作成し、編集を行っていくのです。

Dockerfile, Docker-compose.ymlの編集の仕方については下記記事をご参照下さい。(Ruby on Railsの場合)

まとめ

Dockerを使うことで複数人で開発するプロジェクトの開発環境を一人ひとり揃えることができ、Docker Composeを使うことでWebアプリケーションフレームワーク+データベースのような複数コンテナを起動する場合にも対応することができます。非常に強力なツールですね。

以上で説明を終了します。最後まで読んでいただきありがとうございました!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?