Dockerfile 如下:
FROM ubuntu:latest AS build
LABEL author="fourstring"
ARG NGINX_VER=1.15.7
ARG NGINX_URL=http://nginx.org/download/nginx-${NGINX_VER}.tar.gz
ARG OPENSSL_VER=1.1.1a
ARG OPENSSL_URL=https://www.openssl.org/source/openssl-${OPENSSL_VER}.tar.gz
ARG PCRE_VER=8.42
ARG PCRE_URL=https://ftp.pcre.org/pub/pcre/pcre-${PCRE_VER}.tar.gz
ARG ZLIB_VER=1.2.11
ARG ZLIB_URL=https://zlib.net/zlib-${ZLIB_VER}.tar.gz
ARG NGINX_BUILD_PARAS='--prefix=/usr/local/nginx --with-cc-opt=-static --with-ld-opt=-static --with-threads --with-file-aio --with-http_ssl_module --with-http_v2_module --with-http_sub_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_stub_status_module --with-openssl=../openssl-${OPENSSL_VER} --with-pcre=../pcre-${PCRE_VER} --with-pcre-jit --with-zlib=../zlib-${ZLIB_VER}'
ARG APT_PACKAGES='build-essential wget tar upx'
ARG APT_REMOVE_PACKAGES='build-essential upx'
ARG MAX_THREADS=3
RUN groupadd -g 50000 www && \
useradd -g 50000 -u 50000 -s /sbin/nologin www
RUN apt -y update && \
apt -y install ${APT_PACKAGES} && \
cd /usr/local/src && \
wget ${ZLIB_URL} && \
wget ${PCRE_URL} && \
wget ${OPENSSL_URL} && \
wget ${NGINX_URL} && \
tar xzf nginx-${NGINX_VER}.tar.gz && \
tar xzf openssl-${OPENSSL_VER}.tar.gz && \
tar xzf zlib-${ZLIB_VER}.tar.gz && \
tar xzf pcre-${PCRE_VER}.tar.gz && \
cd nginx-${NGINX_VER} && \
./configure ${NGINX_BUILD_PARAS} && \
make -j${MAX_THREADS} && \
make install && \
upx /usr/local/nginx/sbin/nginx && \
mkdir -p /usr/local/nginx/conf/vhost
FROM alpine
RUN adduser -g 50000 -u 50000 -s /sbin/nologin -D -H www
COPY --from=build --chown=www:www /usr/local/nginx /usr/local/nginx
COPY nginx.conf /usr/local/nginx/conf
COPY xxx.conf /usr/local/nginx/conf/vhost
EXPOSE 80
EXPOSE 443
USER www
CMD [ "/usr/local/nginx/sbin/nginx","-g","daemon off;" ]
现在遇到了一些诡异的用户问题。
USER www
指令,那么会报错getpwnam("www") (No such file or directory)
,由于一般使用不存在的用户运行 nginx 的报错并不会出现(No such file or directory)
,我用 Google 搜索后找到一个解释说当使用指定的用户以外的用户运行 nginx 就会出现这个错误,加USER www
指令后这个报错确实也消失了那么请问我应该如何处理这个用户问题?还是我对 Linux 或者 nginx 用户机制的理解有问题呢?谢谢
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.