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】DockerfileのRUN周辺で出てくるコマンドに関するメモ

Last updated at Posted at 2022-09-10

RUN

Dockerfileを記述する際の命令の一つにRUNがある。これはコマンドの実行を命令するものである。
以下のコードではDockerfileを一部抜粋している。これはrailsアプリのDockerfileの一部で、rails6ではWebpackerがjavascriptの標準コンパイラとなるので、Webpackerのインストールに必要なyarnとnodejsをインストールし、その他画像処理に必要なimagemagickやデータベースのmysqlのサーバーとクライアントをインストールしているという内容である。

RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
  && echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \
  && curl -sL https://deb.nodesource.com/setup_16.x | bash - && apt-get install -y nodejs \
  && apt-get update -qq \
  && apt-get -y install \
  yarn \
  nodejs \
  imagemagick \
  default-mysql-server \
  default-mysql-client

ここで書かれている記述について以下にいくつかメモをしておく。

curl

client for url。URLに書かれている先とデータのやり取りを行う。 -sS というのは、 -s(実行時に表示される様々なメッセージを表示しない)というオプションと、 -S (エラーメッセージを表示する)というオプションの二つが組み合わさったもので、実行時にエラーメッセージがあればそれのみを表示する設定となる。逆にエラーメッセージ以外は表示しない。
ここではhttps://dl.yarnpkg.com/debian/pubkey.gpgというURLから公開鍵をインポートする目的でcurlが使われる。

|

パイプと呼ばれる記号。curlを使ってURLから取得した標準出力のデータを標準入力として次のコマンドに渡している。

apt-key add -

aptはDebian系OSで使われるパッケージ管理コマンド。 key addは信頼キーリストに新たなキーを追加するコマンドで、addの後の - は先程のcurlのURLからの標準入力のデータをそのまま標準入力として使うという意味。(apt-key listを実行すれば信頼キーのリストを表示できる。)
ただしこのコマンドは現在非推奨となっており、これに代替するコードは調べたら結構出てくる。(個人的にも何か記事を書ければと思う)ここではyarnレポジトリを有効化するために、yarnレポジトリのGPGキーをリストに追加している。

&&

前のコマンドが成功したら後ろのコマンドを実行するというSQLで言うところのAND的な役割を持つリナックスコマンド。

echo〜tee

echoは文字列を表示するリナックスコマンド。teeは標準入力として受け取った内容をファイルに書き出すコマンド。ここではdeb https://dl.yarnpkg.com/debian/ stable mainという文字列を/etc/apt/sources.list.d/yarn.listというファイルに書き出している。これにより、公開されているyarnのレポジトリのソースをリストに追加している。

apt-get update

先程のecho〜teeにでリストに追加されたURLからパッケージファイルを
/var/lib/apt/listsに格納している。これによりパッケージファイルのインストールができるようになる。-qqはエラー以外は表示しないというオプション

apt-get install

パッケージのインストールを行う。-yは質問に全てyesと答えるオプション。

\

バックスラッシュはコードを複数行に分ける。コードの可読性を高める。

default-mysql-server default-mysql-client

ここについては一応補足。これをmysql-server、mysql-clientと書いてあるコードも見かけるが、DockerのベースイメージがDebian10以降だとexit code: 100というエラーが出てしまうようなのでお気をつけて。

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?