今回はDockerfileの書き方と、それを使用したコンテナの起動方法を学んでいきます。
環境
Dockerfileとは
DockerfileとはDockerイメージを作るためのレシピのようなものです。例えばnuxt.jsの開発環境を構築したい場合、OSのイメージに必要なパッケージをインストールしていく必要がありますがそこまで自動で行ってくれるレシピを元にイメージを作成することができます。
Dockerfileの記述
早速Dockerfileを記述していきます。今回はnuxt.jsの開発環境を構築します。
FROM node:lts
RUN apt-get update && \
apt-get upgrade -y && \
yarn global add @vue/cli && \
yarn global add @vue/cli-init && \
yarn global add create-nuxt-app
EXPOSE 3000
FROMはベースとするイメージを指定します。nodeのイメージがあったのでそちらをベースにします。コロン以降はタグを表します。使いたいバージョンなどを指定できます。
RUNは実行するOSコマンドを指定します。パッケージの更新とvue-cliのインストールを行います。昔はcreate-nuxt-appは必要なかったと思うのですが、先ほど試したら入れないとエラーになったので追加しました。
EXPOSEはコンテナが接続用にListenするポートを指定します。
Dockerfileを利用したコンテナの生成
イメージの作成(docker build)
Dockerfileをもとにイメージを作成していきます。カレントディレクトリにDockerfileが存在するものとします。
buildコマンド実行後に「docker images」で目的のイメージが作成されていることが確認できると思います。
> docker build -t mynuxt:1 .
(省略)
> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mynuxt 1 3d2e137f9e57 6 seconds ago 1.32GB
node lts a37df1a0b8f0 5 hours ago 918MB
指定しているオプションについては次の通りです。
- -t:作成するイメージ名を指定します。コロン以降はTAGを表します。
作成したイメージを起動する
これだけだとnuxt開発環境が作成されたかわからないので、実際にプロジェクトを作成してみます。
まず、コンテナの起動と、コンテナへのアクセスを行います。
> docker run -d -it -p 3000:3000 -v ${PWD}:/work --name mynuxt-1 mynuxt:1
> docker exec -it mynuxt /bin/bash
コンテナにアクセスした状態で以下の操作を行います。
# npx create-nuxt-app myproject
(選択肢は全てデフォルト)
localhostからアクセスするために、myproject/nuxt.config.jsに次の設定を追加します。
export default {
mode: 'universal',
// ここから
server: {
port: 3000,
host: '0.0.0.0',
},
// ここまで
コンテナにアクセスしてサーバを起動します。
# cd myproject
# npm run dev
ブラウザからhttp://localhost:3000へアクセスするとページが表示されます。
さいごに
コンテナ操作、Dockerfileと来たので、次はDocker Composeですかね。Docker Comoposeは触ったことないのでがんばって学習しないと。
以上です。
コメント