🐳

【初心者向け】フロントエンドエンジニアが現場で開発するために最低限抑えておきたいDocker知識まとめ

2024/04/09に公開

今回は、フロントエンドエンジニアが現場で開発するために最低限抑えておきたいDockerの知識について解説します。

僕自身、Dockerに詳しいとはお世辞にも言い難いのですが、それでもフロントエンドエンジニアとしてDockerを用いて開発業務をこなすことができています。
なので、「これからフロントエンドのエンジニアとしてDockerを使いこなせるようになりたい」とか「Dockerは全く初心者でこれから勉強していきたい」という方にとって、ある程度参考になるのではないでしょうか。

Dockerとは

Dockerとは、一言で表せば「データやプログラムを隔離できる仕組み」です。

例えばサーバーを立てる時には、ApacheやMySQLなどのソフトウェアを1つのコンピュータ内で同時に動かします。
こうした複数のソフトウェアを、1つのコンピュータ内の独立した環境にそれぞれ隔離できるのがDockerです。

図で表すと以下のような感じです。

ちなみに、上記のような独立した1つの環境のことをコンテナと言います。

Dockerのメリット

では、複数のソフトウェアを各コンテナに隔離できると何が嬉しいのでしょうか?
結論、メリットとしては以下のとおりです。

開発者ごとの環境の差異をなくせる

例えばOSがwindowsかmacかによってMySQLなどのソフトウェアが動かなかったり、MySQLなどのソフトウェアのバージョンの違いによって動作する時としない時があるといった問題が、Dockerを使わない場合は起こってしまうと思います。Dockerを用いると、コンテナを使って同じ環境をそれぞれのPCで作り出せるので、「Aさんの開発環境では動くけどBさんの開発環境では動かない」という問題を避けることができます。

簡単に配布できる

コンテナはDockerfileやdocker-compose.yamlなどの、Dockerを利用するためのファイルを渡すことで、チーム内の各開発者に簡単に配布することができます。
一般的にはgithubのレポジトリにこれらのファイルを置くので、レポジトリをpullして自身の開発環境で使うといった感じです。

Dockerを使うには

まず、DockerはLinux OSの上で動作します。 Dockerを理解する上ではこの点は非常に重要です。
Docker自体はmacでもwindowsでも利用することはできるのですが、何らかの形でLinuxが必要になります。

では、macやwindowsでLinuxの環境を用意するにはどうしたら良いのでしょうか?

結論としては、Docker Desktop for MacやDocker Desktop for Windowsのようなソフトをインストールします。
これによって、Linuxの環境を自身のPCに構築できます。

macの場合

  1. Docker Desktop for Macを公式サイトからダウンロードしてインストールします。
  2. インストールが完了したら、Docker Desktopを開始します。

windowsの場合

  1. Docker Desktop for Windowsを公式サイトからダウンロードしてインストールします。
  2. インストールが完了したら、Docker Desktopを開始します。

この辺りについてはしっかり説明すると長くなってしまうので、詳細は割愛します。
(もし気になる方は、この記事の一番下にある参考書籍を読むと深い理解ができます。)

Dockerfileとは

次に、Dockerfileとは何かについて解説します。
Dockerfileはイメージというものを作成します。Dockerfileには、どういうイメージを作るのかといったことを記述します。
イメージというのは、コンテナを作るための雛形のようなものです。

図でいうと以下のような感じです。ちなみに、Dockerの文脈では、イメージを作成することをビルドと言います。

まずはこのような流れを抑えておいてください。

docker composeとは

docker composeとは、複数のコンテナを一括で扱うためのものです。
docker-compose.yamlというファイルに複数のコンテナの設定を記述でき、これにより複雑なアプリケーションやサービスの構成を簡単に管理することができます。

抑えておいてほしいコマンドは以下のとおりです。docker composeを用いたコマンドは、基本的にdocker compose ~の形になります。

コンテナを作成・起動する

コンテナのライフサイクルは、作成→起動→停止→破棄の4つです。以下のコマンドは、そのうちの作成と起動を行います。
-dオプションは、コンテナをバックグラウンドで実行し、シェルをブロックしないようにするためのものです。

docker compose up -d

コンテナを停止・破棄する

以下のコマンドは、コンテナの停止と破棄を行います。

docker compose down

このように、コンテナは「作って壊す」が手軽にできてしまうのも便利です。
「コンテナを削除して大丈夫なのかな?」などと怖がる必要はありません。壊してもまた

docker compose up -d

でコンテナを作れば良いのです。

コンテナの一覧を見る

以下のコマンドは、コンテナの一覧を見ることができます。

docker container ls

コンテナに入る

コンテナの中に入ると、コンテナ内で色々な操作ができます。
以下のコマンドを用いると、すでに起動しているコンテナに入ることができます。
そのコンテナの中では、linuxコマンドを入力することができます。

docker exec -ti <コンテナ名> bash

linuxコマンドと言っても何を打ったら良いのかよくわからないかと思いますが、一番良く用いるのは、フロントエンドのコンテナに入ってそこから以下のようなコマンドでローカルの開発サーバーを起動することだと思います。

npm run dev

このようにして、開発環境を立ち上げることができるので、あとはここから実際にフロント側の開発をしていく流れです。

また、例えばMySQLのようなDBのコンテナに入れば、そこからSQLを叩いてテーブルのデータを確認することも可能です。

最後に

この記事で説明した概要を抑えていれば、とりあえずフロントエンドのエンジニアとしてやっていく上ではあまり困ることはないかなと思います。
あとは必要になったら上記の知識に肉付けしていけばOKです。

他にもDockerfileやdocker-compose.yamlの記述ができたり、kubernetesが使いこなせたりすると尚良いのですが、その辺りはバックエンドやインフラのエンジニアの方が担当するケースが多いので、一旦は飛ばして大丈夫かなと思います。まずは自身の業務をこなすための知識をしっかりと身につけましょう。

参考

Dockerについて勉強する上では、以下の書籍が非常に参考になりました。内容も詳しいですし図も豊富なのでわかりやすかったです。

Xについて

僕のXアカウントでは、主にweb開発、AI、会社経営のノウハウについて発信しています。もし興味があれば、フォローしていただけると嬉しいです。

プログラミング学習サポート&キャリア相談について

プログラミング学習サポート&キャリア相談も始めました。興味のある方はこちらから詳細をご覧ください。
https://shibayama-masaki.com/consulting/

Discussion