Laradockコンテナのビルドで ”adduser: group ‘www-data’ in use” が発生したときの対応【メモ】

ツール
この記事は約13分で読めます。

概要

あるLaravelアプリケーションの開発の一部をパートナーさんに委託しています。
最近はLaradockで開発環境を作ることが多いので今回もパートナーさんにセットアップをお願いしたところ、nginxとmysqlコンテナを初回起動・ビルドするタイミングで以下のエラーが発生しました。

$ docker-compose up -d nginx mysql
Building mysql
Step 1/9 : ARG MYSQL_VERSION=latest
Step 2/9 : FROM mysql:${MYSQL_VERSION}

(中略)

Successfully built bd06d5eebe1e
Successfully tagged laradock_mysql:latest
Building nginx
Step 1/13 : FROM nginx:alpine
---> bfba26ca350c
Step 2/13 : LABEL maintainer="Mahmoud Zalt <mahmoud@zalt.me>"
---> Running in f18b01be731c
Removing intermediate container f18b01be731c
---> cb534d2b472d
Step 3/13 : COPY nginx.conf /etc/nginx/
---> aba743fa0d2f
Step 4/13 : ARG CHANGE_SOURCE=false
---> Running in 58ed8074348a
Removing intermediate container 58ed8074348a
---> e51928932889
Step 5/13 : RUN if [ ${CHANGE_SOURCE} = true ]; then     sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/' /etc/apk/repositories ;fi
---> Running in acee86eaf4af
Removing intermediate container acee86eaf4af
---> 218bb0de3422
Step 6/13 : RUN apk update     && apk upgrade     && apk add --no-cache openssl     && apk add --no-cache bash     && adduser -D -H -u 1000 -s /bin/bash www-data
---> Running in 5dddece48d2d
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz
v3.9.4-24-g4e2ff29bbe [ http://dl-cdn.alpinelinux.org/alpine/v3.9/main]
v3.9.4-13-g22588a32d0 [ http://dl-cdn.alpinelinux.org/alpine/v3.9/community]
OK: 9775 distinct packages available
OK: 27 MiB in 37 packages
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz
(1/1) Installing openssl (1.1.1b-r1)
Executing busybox-1.29.3-r10.trigger
OK: 28 MiB in 38 packages
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz
(1/2) Installing readline (7.0.003-r1)
(2/2) Installing bash (4.4.19-r1)

Executing bash-4.4.19-r1.post-install
Executing busybox-1.29.3-r10.trigger
OK: 29 MiB in 40 packages
adduser: group 'www-data' in use
ERROR: Service 'nginx' failed to build: The command '/bin/sh -c apk update     && apk upgrade     && apk add --no-cache openssl     && apk add --no-cache bash     && adduser -D -H -u 1000 -s /bin/bash www-data' returned a non-zero code: 1
</mahmoud@zalt.me>

nginxコンテナのビルドでadduser: group 'www-data' in useというエラーが発生しています。
わたしの環境ではビルドも起動も問題なくできたのですが。。。

環境

  • macOS Mojave 10.14.5
  • Laradock 7.9.1

原因

依存しているDocker Hubのnginxコンテナもしくはalpineコンテナがアップデートされたことが原因と思われます。

対応

Dockerfile中のエラーが発生したコマンドを修正します。
具体的には、laradock/nginx/Dockerfileを以下のように修正してみました。

$ git diff nginx/Dockerfile
diff --git a/laradock/nginx/Dockerfile b/laradock/nginx/Dockerfile
index 12c456d..a227f12 100644
--- a/laradock/nginx/Dockerfile
+++ b/laradock/nginx/Dockerfile
@@ -15,8 +15,11 @@ RUN if [ ${CHANGE_SOURCE} = true ]; then \
 RUN apk update \
     && apk upgrade \
     && apk add --no-cache openssl \
-    && apk add --no-cache bash \
-    && adduser -D -H -u 1000 -s /bin/bash www-data
+    && apk add --no-cache bash
+
+RUN set -x ; \
+    addgroup -g 82 -S www-data ; \
+    adduser -u 82 -D -S -G www-data www-data && exit 0 ; exit 1

 ARG PHP_UPSTREAM_CONTAINER=php-fpm
 ARG PHP_UPSTREAM_PORT=9000

そして、以下コマンドでコンテナを再ビルドします。

$ docker-compose down
$ docker-compose build --no-cache nginx

結果は以下です。無事、ビルドできているようですね。

$ docker-compose build --no-cache nginx mysql
Building mysql
Step 1/9 : ARG MYSQL_VERSION=latest
Step 2/9 : FROM mysql:${MYSQL_VERSION}

(中略)

Successfully built 5c5dc4d1deeb
Successfully tagged laradock_mysql:latest
Building nginx
Step 1/14 : FROM nginx:alpine
---> bfba26ca350c
Step 2/14 : LABEL maintainer="Mahmoud Zalt <mahmoud@zalt.me>"
---> Running in de6b9eb9dbda
Removing intermediate container de6b9eb9dbda
---> e752bc270d49
Step 3/14 : COPY nginx.conf /etc/nginx/
---> 5d49b2ab05a3
Step 4/14 : ARG CHANGE_SOURCE=false
---> Running in 409e69552b2d
Removing intermediate container 409e69552b2d
---> 102751baf5de
Step 5/14 : RUN if [ ${CHANGE_SOURCE} = true ]; then     sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/' /etc/apk/repositories ;fi
---> Running in 0215a4174c33
Removing intermediate container 0215a4174c33
---> 16aa85b242e1
Step 6/14 : RUN apk update     && apk upgrade     && apk add --no-cache openssl     && apk add --no-cache bash
---> Running in b25dca7b3f8f
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz
v3.9.4-24-g4e2ff29bbe [ http://dl-cdn.alpinelinux.org/alpine/v3.9/main]
v3.9.4-13-g22588a32d0 [ http://dl-cdn.alpinelinux.org/alpine/v3.9/community]
OK: 9775 distinct packages available
OK: 27 MiB in 37 packages
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz
(1/1) Installing openssl (1.1.1b-r1)
Executing busybox-1.29.3-r10.trigger
OK: 28 MiB in 38 packages
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz
(1/2) Installing readline (7.0.003-r1)
(2/2) Installing bash (4.4.19-r1)
Executing bash-4.4.19-r1.post-install
Executing busybox-1.29.3-r10.trigger
OK: 29 MiB in 40 packages
Removing intermediate container b25dca7b3f8f
---> 453863a3df7a
Step 7/14 : RUN set -x ;     addgroup -g 82 -S www-data ;     adduser -u 82 -D -S -G www-data www-data && exit 0 ; exit 1
---> Running in 80861b5b8e12
+ addgroup -g 82 -S www-data
addgroup: group 'www-data' in use
+ adduser -u 82 -D -S -G www-data www-data
+ exit 0
Removing intermediate container 80861b5b8e12
---> 97a2634dfc60
Step 8/14 : ARG PHP_UPSTREAM_CONTAINER=php-fpm
---> Running in 70a0f5de1c85
Removing intermediate container 70a0f5de1c85
---> 5b9c0079cea9
Step 9/14 : ARG PHP_UPSTREAM_PORT=9000
---> Running in 28d221266022
Removing intermediate container 28d221266022
---> 9e1a0c645d80
Step 10/14 : RUN echo "upstream php-upstream { server ${PHP_UPSTREAM_CONTAINER}:${PHP_UPSTREAM_PORT}; }" > /etc/nginx/conf.d/upstream.conf     && rm /etc/nginx/conf.d/default.conf
---> Running in abd5270e47e5
Removing intermediate container abd5270e47e5
---> 4c2118e93b9c
Step 11/14 : ADD ./startup.sh /opt/startup.sh
---> 79222a172083
Step 12/14 : RUN sed -i 's/\r//g' /opt/startup.sh
---> Running in b60308ed7477
Removing intermediate container b60308ed7477
---> fe937afee823
Step 13/14 : CMD ["/bin/bash", "/opt/startup.sh"]
---> Running in 62ed283c5bae
Removing intermediate container 62ed283c5bae
---> a9febf94feef
Step 14/14 : EXPOSE 80 443
---> Running in bd48f2935b03
Removing intermediate container bd48f2935b03
---> 061cbe228816
Successfully built 061cbe228816
Successfully tagged laradock_nginx:latest
</mahmoud@zalt.me>

参考

Laradock本体では、Dockerfileの修正がmasterにマージされていました。
最新のLaradockをGitHubからcloneすれば、この問題は解消していると思います。

コメント

タイトルとURLをコピーしました