概要
ある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すれば、この問題は解消していると思います。
コメント