🌊

nginxをrootユーザー以外で起動する場合の留意点

2024/09/23に公開

担当プロダクトの要件としてnginxをrootユーザー以外で起動するというものがありました。
rootユーザーと同じように実行しようしたらハマったのでメモとして記録しておきます。

やろうとしたこと

以下のようにsampleuserを作成し、nginxを起動しようとしました。

...略
RUN adduser --disabled-password --gecos "" sampleuser
EXPOSE 80
USER sampleuser
ENTRYPOINT ["nginx"]

しかし、bind() to 0.0.0.0:80 failed (13: Permission denied)というようなエラーが発生しました。

対応方法

以下の参考にした記事によると、0〜1023ポートはrootユーザーでないと使えないとのことです。
https://qiita.com/tanakaworld/items/b10426075b04570740af

従って80ポートは使えないので別のポートで起動する必要があります。
今回は8080ポートで起動しました。

...略
RUN adduser --disabled-password --gecos "" sampleuser
EXPOSE 80
USER sampleuser
ENTRYPOINT ["nginx"]
server {
    listen        8080;
...略
}

Discussion