dockerでERROR: failed to solve: dockerfile parse error on lineが出たとき

August 14, 2023 (updated: August 22, 2023)
tag icon
docker
tag icon
troubleshooting

ググっても同じ内容のエラーに遭遇しなかったので、参考に記録しておきます。

事象

Dockerfileを編集したところ、これまで動いていたDockerfileだったのに下記エラーが出てビルドできなくなった

ERROR: failed to solve: dockerfile parse error on line

エラーで出ている個所はいろいろ変わり、例えば下記の「&&」や、2つ目のコード例にある「duckdb-engine」などで引っかかる。ここで2つ目の場合は行を入れ替えると別のソフトでひっかかる。

RUN jupyter contrib nbextension install --user¥
&&  jupyter nbextensions_configurator enable --user
RUN pip install --no-cache-dir \
    duckdb ¥
    duckdb-engine ¥
    psycopg2 ¥
    jupysql

原因と対処

1つ上のコード例で条件によっては気が付くかもしれないが、改行に「\(バックスラッシュ)」を入力したと思っていたが、MacからWindows10へのリモートデスクトップ環境では「¥(円マーク?)」と入力されていた。

よって、当該箇所を削除し1行にする、あるいはMacからのリモートデスクトップではない環境でファイルを開きなおして当該箇所の改行を入れなおすとエラーが解消する。

教訓

異種OS間のリモートデスクトップ環境で、テキストファイルに特殊コードを入れる場合は気をつけよう。

Macでのバックスラッシュは円マークではなく、Optionキー+円マーク。

フォントに Migu1M を使っている環境なら気が付いたので、コーディング用フォントを使うことは大事(このサイトではcode系の表示に Miguシリーズのフォント を使っています)。


Profile picture

i氏 システムのデザインが好きな自称システムアーキテクト。データサイエンティスト見習い。Jamstackのアーキテクチャーに感動して、Gatsbyでブログを始めました。