概要
- Dockerfileに基づいてイメージを作成する時に気づいたので、メモしておく。
- ファイルをダウンロードすることを重視。同じcurlコマンドを違うところ(コンテナ内部とDockerfileのRUN)で実行すると結果が異なる
前提
やりたいこと
- Dockerfile の RUN にて yarn のリポジトリファイルを /etc/yum.repos.d に入れる
環境
- OS
- MacOS Mojave 10.14.6
- docker version
- Docker version 19.03.1, build 74b1e89
- image
- centos:latest (CentOS 7)
検証
失敗バージョン
RUN curl -LO https://dl.yarnpkg.com/rpm/yarn.repo -o /etc/yum.repos.d/yarn.repo
- 結果
- 指定したファイルダウンロードされていない
- シェルでコンテナに接続して、同じコマンドでダウンロードできたのに、、、
成功(欠点あり)
WORKDIR=/etc/yum.repos.d
RUN curl -LO https://dl.yarnpkg.com/rpm/yarn.repo
- 結果
- ダウンロードできた
- シェルでコンテンに接続すると、最初のディレクトリが /etc/yum.repos.d になってしまう
成功(最適?)
RUN curl -o /etc/yum.repos.d/yarn.repo -LO https://dl.yarnpkg.com/rpm/yarn.repo
- 結果
- 問題なくダウンロードできた
- シェルでコンテンに接続して、ディレクトリはホームディレクトリのまま
結論
- まだ原因について調べていないが、RUN に curl を実行するとき気をつけないと!