何をしようとして起きた?
下記の条件でcomposerだけdockerfileを分けてimage作成しようとしたところ、題名のエラー文を吐きました。
Dockerfile
Dockerfile
FROM php:7.4-fpm
WORKDIR /var/www/html
RUN apt-get update && apt-get install -y \
git \
zip \
unzip \
&& curl -sS https://getcomposer.org/installer | php \ && mv composer.phar /usr/local/bin/composer
エラー文
% docker build -t composer:latest -f ./composer/Dockerfile . #buildコマンド
[+] Building 169.4s (6/6) FINISHED
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 249B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/php:7.4-fpm 1.3s
=> CACHED [1/3] FROM docker.io/library/php:7.4-fpm@sha256:c84d7c735418da68ad223c3f41fb09c3c04da243fef28c483f58eff769452ea8 0.0s
=> [2/3] WORKDIR /var/www/html 0.0s
=> ERROR [3/3] RUN apt-get update && apt-get install -y git zip unzip && curl -sS https://getcomposer.org/installer | php && mv composer.phar /usr/local/bin/compose 167.9s
------
> [3/3] RUN apt-get update && apt-get install -y git zip unzip && curl -sS https://getcomposer.org/installer | php && mv composer.phar /usr/local/bin/composer:
#6 0.508 Get:1 http://security.debian.org/debian-security buster/updates InRelease [65.4 kB]
#6 0.562 Get:2 http://deb.debian.org/debian buster InRelease [122 kB]
#6 0.763 Get:3 http://security.debian.org/debian-security buster/updates/main amd64 Packages [269 kB]
#6 2.459 Get:4 http://deb.debian.org/debian buster-updates InRelease [51.9 kB]
#6 3.867 Get:5 http://deb.debian.org/debian buster/main amd64 Packages [7907 kB]
#6 70.53 Get:6 http://deb.debian.org/debian buster-updates/main amd64 Packages [9504 B]
#6 71.68 Fetched 8424 kB in 1min 11s (118 kB/s)
#6 71.68 Reading package lists...
〜 成功ログ部分省略 〜
#6 166.4 Setting up git (1:2.20.1-2+deb10u3) ...
#6 166.4 Setting up xauth (1:1.0.10-1) ...
#6 166.4 Processing triggers for libc-bin (2.28-10) ...
#6 166.5 Could not open input file: #ここがエラーの原因...?
#6 167.8 curl: (23) Failed writing body (0 != 16366)
------
executor failed running [/bin/sh -c apt-get update && apt-get install -y git zip unzip && curl -sS https://getcomposer.org/installer | php \ && mv composer.phar /usr/local/bin/composer]: exit code: 1
#↑エラー文
%
原因は?
Dockerfileの7行目がうまく改行ができていなかったからでした。
そのため、改行をつなげるための\
は文末になければならないのに文中に来てしまっており、コマンドの文字として扱われてしまっていました。
##解決方法
下記のようにDockerfileを直すことでこのエラーを消すことができました。
Dockerfile
FROM php:7.4-fpm
WORKDIR /var/www/html
RUN apt-get update && apt-get install -y \
git \
zip \
unzip \
&& curl -sS https://getcomposer.org/installer | php \
&& mv composer.phar /usr/local/bin/composer
余談
今回のものは凡ミスすぎて検索で解決策が出てこなかったため、逆に需要があるかと思い記事にしました。
またこの他にも、mvコマンドがcomposerディレクトリに入れているように見えて実はファイル名を変えているというつまづきポイントがあるので、この機会に頭の片隅に入れておかれると良いかと思います。(参考記事:https://sheefelt.hatenablog.com/entry/2019/01/06/000902 )