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 3 years have passed since last update.

【備忘録】Dockerfile

Posted at

初めに

私のリポジトリで、Docker環境でrailsの開発環境を整えることができるクイックスタートを用意しています。今回は、そこに配置したDockerfileについてまとめていこうと思います。
https://github.com/naokikubo2/quickstart/blob/master/Dockerfile

Dockerfileとは

docker imageを作成する際のコマンドをコード化したもの
公式ドキュメント

Dockerfileで重要なコマンドは、

  • FROM
  • RUN
  • COPY
    の3つだけです。

FROM
ベースとなるimageの指定
https://docs.docker.com/engine/reference/builder/#from
RUN
コマンドの実行
https://docs.docker.com/engine/reference/builder/#run
COPY
ローカルからdocker imageへのファイルの転送
https://docs.docker.com/engine/reference/builder/#copy

ベースイメージの読み込み

FROM ruby:2.7

FROM 行では、ruby:2.7 のベースイメージを読み込んでいます。

FROM 命令は、イメージビルドのための処理ステージを初期化し、ベース・イメージ を設定します。後続の命令がこれに続きます。 このため、正しい Dockerfile は FROM 命令から始めなければなりません。 ベース・イメージは正しいものであれば何でも構いません。 簡単に取り掛かりたいときは、公開リポジトリ から イメージを取得します。dockerリファレンス

言語の指定

ENV LANG C.UTF-8

rails consoleで日本語を使うために、UTF-8をここで設定します。

警告を取り除くための処理

ENV DEBCONF_NOWARNINGS yes
ENV APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE yes
ENV XDG_CACHE_HOME /tmp
EXPOSE 3000
  • 何かインストールする時に、「本当にインストールしますか?」の様な警告が表示されて、いちいち「yes」を選択したりすることありますよね?1, 2行目は、警告が来たら必ずyesを選択するというものです。

APTって何って方は、以下参照

APTとは、Linuxでソフトウェアの導入や管理、削除に用いられるパッケージ管理システムの一つ。また、それを操作するコマンド(apt)。Debian系ディストリビューションで標準的に使われている。IT用語辞典

apt-key は、apt が パッケージを認証するのに使用するキーの一覧を管理するのに使用します。ubuntu manual

  • 3行目:Dockerのマウント領域に生成されるファイルが、キャッシュディレクトリの書き込み権限が無くてエラーを吐くケースがあリます。XDG_CACHE_HOMEに書き込み権限のあるディレクトリを指定してますが、どうもRailsのみの使用では発生しなさそうです。問題なければ外してもいいと思います。

  • 4行目:expose(晒す)なので、 ポート番号3000を晒します。つまり、晒したポート番号3000からデータを受け付けるという意味です。

コンテナパッケージのアップデートとインストール

RUN apt-get update -qq && apt-get install -y \
    build-essential \
    libpq-dev \
    vim \
    less \
    graphviz
  • upadateしてからインストールするので、最新バージョンのパッケージを使用できます。
  • ビルドに必要なツールがインストールされる
  • PostgreSQLの接続に必要。
  • vimのインストール(ターミナルでファイル内容を操作できます)
  • lessコマンド(linuxコマンドの1つで、ファイルの中身を表示することができる)を追加
  • オープンソースのツールパッケージgraphvizを使う為(ER図を出力する時に必要です)

yarnのインストール

yarnとnpmはJavaScriptでサーバーサイドの処理を行うために使うプログラム(Node.js)上で使うパッケージマネージャーということです。

RUN apt-get install apt-transport-https
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
RUN apt-get update && apt-get install -y yarn
  • 2行目:pubkeyは認証を行うための公開鍵です。
  • 3行目:現在のyarnのstable版情報を保存。teeコマンドを使うことによって、echoで出力した内容を保存します。
  • 4行目:yarnのインストールです。

ワークディレクトリを設定

# setting work directory
RUN mkdir /app
WORKDIR /app
  • 2行目:プロジェクト用のディレクトリを作成
  • 3行目:ワークディレクトリに設定

環境変数を設定

ENV HOME /app

スクリプトやコンテナに入ったときに使う用。

Gemfileを作成

COPY Gemfile /app/Gemfile

「Gemfile」というローカルファイルを、プロジェクトのディレクトリにコピー。

参考資料

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?