Help us understand the problem. What is going on with this article?

Dockerfileでビルド時にbashを使う

More than 1 year has passed since last update.

結論

ずっとbashを使いたい

Docker 1.12から追加されたSHELLを使う。

SHELL ["/bin/bash", "-c"]

ずっとbashを使いたい(Docker 1.12未満)

/bin/shのシンボリックリンクを張り替える。

RUN rm /bin/sh && ln -s /bin/bash /bin/sh

一時的にbashを使いたい

シェルを直接指定してコマンドを実行する。

RUN ["/bin/bash", "-c", "echo hello"]

Dockerfileでbashを使ういろいろ

Dockerfileのビルド時にsource等を使いたい場合,デフォルトのshellである/bin/shでは使えないため,/bin/bash等を使う必要が出てくる。
ググるとRUN ["/bin/bash", "-c", "echo hello"]などやRUN rm /bin/sh && ln -s /bin/bash /bin/shなどが上位にヒットする。
前者は一時的に/bin/bashで実行できるが全ての命令を/bin/bashで実行したい場合は煩雑である。
後者は/bin/shを削除するため,/bin/shも使いたいときは向かないが,SHELLが使えないDocker 1.12未満でも動くため,Dockerのバージョンが古い場合は便利である。

しかし,よくよく調べるとちゃんと公式ドキュメントに書いてあった。
Docker 1.12から追加されたSHELLを使えばデフォルトのshellを変更できる。
具体的には以下のように書く。

SHELL ["/bin/bash", "-c"]

再びshellを変更したい場合は SHELL ["/bin/sh", "-c"]と書けば変更することができる。

anagura0000
GIS Engineer 経路検索サービスの会社におります。 主に備忘録。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした