概要
ある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
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
参考
Laradock本体では、Dockerfile
の修正がmasterにマージされていました。
最新のLaradockをGitHubからcloneすれば、この問題は解消していると思います。