无法在 alpine linux (docker) 中运行 nginx

pau*_*l23 13 nginx docker alpine-linux

好吧,我已经设置了一个带有 nginx 的 alpine linux docker 容器

( apk add nginx)

现在我正在尝试运行 nginx。使用简单命令nginx返回以下错误:

nginx: [emerg] open() "/run/nginx/nginx.pid" failed (2: No such file or directory)
Run Code Online (Sandbox Code Playgroud)

这是什么原因造成的?- 即使作为 root 我也没有打开的权限,/run/所以我无法真正检查出来。我的 nginx.conf 是:

#
events {
    worker_connections 768;
    # multi_accept on;
}

http {

    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    #include /etc/nginx/mime.types;
    #default_type application/octet-stream;

    ##
    # SSL Settings
    ##

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;

    ##
    # Logging Settings
    ##

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    ##
    # Gzip Settings
    ##

    gzip on;
    gzip_disable "msie6";

    ##
    # Virtual Host Configs
    ##

    #include /etc/nginx/conf.d/*.conf;
    #include /etc/nginx/sites-enabled/*;
}
Run Code Online (Sandbox Code Playgroud)

当然不包括服务器,但我希望它能够运行并且永远不会提供任何服务。- 但即使我启用了包含(重定向到默认的 html 到页面,我也复制到 docker 中)也会发生同样的错误。

ewa*_*att 14

/run/nginx最新的 alpine 容器上不存在该目录。

您可以创建目录或更改 PID 文件位置。

在 Dockerfile 中创建目录:

RUN mkdir -p /run/nginx
Run Code Online (Sandbox Code Playgroud)

或者更改PID文件的位置:

nginx -g 'pid /tmp/nginx.pid;'
Run Code Online (Sandbox Code Playgroud)