フリーランスITエンジニア・プログラミング・英語学習などについて情報発信する雑記ブログです

I am a software engineer

ツール プログラミング

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

投稿日:

概要

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

  1. $ docker-compose up -d nginx mysql
  2. Building mysql
  3. Step 1/9 : ARG MYSQL_VERSION=latest
  4. Step 2/9 : FROM mysql:${MYSQL_VERSION}
  5.  
  6. (中略)
  7.  
  8. Successfully built bd06d5eebe1e
  9. Successfully tagged laradock_mysql:latest
  10. Building nginx
  11. Step 1/13 : FROM nginx:alpine
  12. ---> bfba26ca350c
  13. Step 2/13 : LABEL maintainer="Mahmoud Zalt <mahmoud@zalt.me>"
  14. ---> Running in f18b01be731c
  15. Removing intermediate container f18b01be731c
  16. ---> cb534d2b472d
  17. Step 3/13 : COPY nginx.conf /etc/nginx/
  18. ---> aba743fa0d2f
  19. Step 4/13 : ARG CHANGE_SOURCE=false
  20. ---> Running in 58ed8074348a
  21. Removing intermediate container 58ed8074348a
  22. ---> e51928932889
  23. Step 5/13 : RUN if [ ${CHANGE_SOURCE} = true ]; then sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/' /etc/apk/repositories ;fi
  24. ---> Running in acee86eaf4af
  25. Removing intermediate container acee86eaf4af
  26. ---> 218bb0de3422
  27. 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
  28. ---> Running in 5dddece48d2d
  29. fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz
  30. fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz
  31. v3.9.4-24-g4e2ff29bbe [http://dl-cdn.alpinelinux.org/alpine/v3.9/main]
  32. v3.9.4-13-g22588a32d0 [http://dl-cdn.alpinelinux.org/alpine/v3.9/community]
  33. OK: 9775 distinct packages available
  34. OK: 27 MiB in 37 packages
  35. fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz
  36. fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz
  37. (1/1) Installing openssl (1.1.1b-r1)
  38. Executing busybox-1.29.3-r10.trigger
  39. OK: 28 MiB in 38 packages
  40. fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz
  41. fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz
  42. (1/2) Installing readline (7.0.003-r1)
  43. (2/2) Installing bash (4.4.19-r1)
  44.  
  45. Executing bash-4.4.19-r1.post-install
  46. Executing busybox-1.29.3-r10.trigger
  47. OK: 29 MiB in 40 packages
  48. adduser: group 'www-data' in use
  49. 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

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

環境

  • macOS Mojave 10.14.5
  • Laradock 7.9.1

原因

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

対応

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

  1. $ git diff nginx/Dockerfile
  2. diff --git a/laradock/nginx/Dockerfile b/laradock/nginx/Dockerfile
  3. index 12c456d..a227f12 100644
  4. --- a/laradock/nginx/Dockerfile
  5. +++ b/laradock/nginx/Dockerfile
  6. @@ -15,8 +15,11 @@ RUN if [ ${CHANGE_SOURCE} = true ]; then \
  7. RUN apk update \
  8. && apk upgrade \
  9. && apk add --no-cache openssl \
  10. - && apk add --no-cache bash \
  11. - && adduser -D -H -u 1000 -s /bin/bash www-data
  12. + && apk add --no-cache bash
  13. +
  14. +RUN set -x ; \
  15. + addgroup -g 82 -S www-data ; \
  16. + adduser -u 82 -D -S -G www-data www-data && exit 0 ; exit 1
  17.  
  18. ARG PHP_UPSTREAM_CONTAINER=php-fpm
  19. ARG PHP_UPSTREAM_PORT=9000
  20.  

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

  1. $ docker-compose down
  2. $ docker-compose build --no-cache nginx

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

  1. $ docker-compose build --no-cache nginx mysql
  2. Building mysql
  3. Step 1/9 : ARG MYSQL_VERSION=latest
  4. Step 2/9 : FROM mysql:${MYSQL_VERSION}
  5.  
  6. (中略)
  7.  
  8. Successfully built 5c5dc4d1deeb
  9. Successfully tagged laradock_mysql:latest
  10. Building nginx
  11. Step 1/14 : FROM nginx:alpine
  12. ---> bfba26ca350c
  13. Step 2/14 : LABEL maintainer="Mahmoud Zalt <mahmoud@zalt.me>"
  14. ---> Running in de6b9eb9dbda
  15. Removing intermediate container de6b9eb9dbda
  16. ---> e752bc270d49
  17. Step 3/14 : COPY nginx.conf /etc/nginx/
  18. ---> 5d49b2ab05a3
  19. Step 4/14 : ARG CHANGE_SOURCE=false
  20. ---> Running in 409e69552b2d
  21. Removing intermediate container 409e69552b2d
  22. ---> 102751baf5de
  23. Step 5/14 : RUN if [ ${CHANGE_SOURCE} = true ]; then sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/' /etc/apk/repositories ;fi
  24. ---> Running in 0215a4174c33
  25. Removing intermediate container 0215a4174c33
  26. ---> 16aa85b242e1
  27. Step 6/14 : RUN apk update && apk upgrade && apk add --no-cache openssl && apk add --no-cache bash
  28. ---> Running in b25dca7b3f8f
  29. fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz
  30. fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz
  31. v3.9.4-24-g4e2ff29bbe [http://dl-cdn.alpinelinux.org/alpine/v3.9/main]
  32. v3.9.4-13-g22588a32d0 [http://dl-cdn.alpinelinux.org/alpine/v3.9/community]
  33. OK: 9775 distinct packages available
  34. OK: 27 MiB in 37 packages
  35. fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz
  36. fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz
  37. (1/1) Installing openssl (1.1.1b-r1)
  38. Executing busybox-1.29.3-r10.trigger
  39. OK: 28 MiB in 38 packages
  40. fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz
  41. fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz
  42. (1/2) Installing readline (7.0.003-r1)
  43. (2/2) Installing bash (4.4.19-r1)
  44. Executing bash-4.4.19-r1.post-install
  45. Executing busybox-1.29.3-r10.trigger
  46. OK: 29 MiB in 40 packages
  47. Removing intermediate container b25dca7b3f8f
  48. ---> 453863a3df7a
  49. 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
  50. ---> Running in 80861b5b8e12
  51. + addgroup -g 82 -S www-data
  52. addgroup: group 'www-data' in use
  53. + adduser -u 82 -D -S -G www-data www-data
  54. + exit 0
  55. Removing intermediate container 80861b5b8e12
  56. ---> 97a2634dfc60
  57. Step 8/14 : ARG PHP_UPSTREAM_CONTAINER=php-fpm
  58. ---> Running in 70a0f5de1c85
  59. Removing intermediate container 70a0f5de1c85
  60. ---> 5b9c0079cea9
  61. Step 9/14 : ARG PHP_UPSTREAM_PORT=9000
  62. ---> Running in 28d221266022
  63. Removing intermediate container 28d221266022
  64. ---> 9e1a0c645d80
  65. 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
  66. ---> Running in abd5270e47e5
  67. Removing intermediate container abd5270e47e5
  68. ---> 4c2118e93b9c
  69. Step 11/14 : ADD ./startup.sh /opt/startup.sh
  70. ---> 79222a172083
  71. Step 12/14 : RUN sed -i 's/\r//g' /opt/startup.sh
  72. ---> Running in b60308ed7477
  73. Removing intermediate container b60308ed7477
  74. ---> fe937afee823
  75. Step 13/14 : CMD ["/bin/bash", "/opt/startup.sh"]
  76. ---> Running in 62ed283c5bae
  77. Removing intermediate container 62ed283c5bae
  78. ---> a9febf94feef
  79. Step 14/14 : EXPOSE 80 443
  80. ---> Running in bd48f2935b03
  81. Removing intermediate container bd48f2935b03
  82. ---> 061cbe228816
  83. Successfully built 061cbe228816
  84. Successfully tagged laradock_nginx:latest

参考

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

-ツール, プログラミング
-, ,

S