ใช้งาน Nginx Dockerfile โดยไม่ใช้ root user

ใช้งาน Nginx Dockerfile โดยไม่ใช้ root user

ช่วงนี้ผมกำลัง DevSecOps Pipeline อยู่โดยมันจะขั้นตอนหนึ่งให้เรา scan dockerfile ด้วยซึ่งถ้า Dockefile ไม่มีการกำหนด user มันจะไม่ให้ผ่าน เพราะมันจะไม่ให้ใช้ root user นั้นเอง

แต่ผมต้องมีการใช้งาน nginx dockerfile ถ้าเราไปเพิ่ม user เฉยๆ มันจะไม่สามารถใช้งานได้ มันต้องมีการแก้ไขสิทธิ์ในการเขียนไฟล์เพิ่มเติมด้วย

ผมเลยจะมาแชร์ Dockerfile สำหรับ Nginx ที่เราจะไม่ใช้ root user กัน

FROM nginx:1.25-alpine
COPY ./nginx/default.conf /etc/nginx/conf.d/default.conf
COPY ./build /usr/share/nginx/html
WORKDIR /usr/share/nginx/html
RUN apk add --update tzdata curl && \
    cp /usr/share/zoneinfo/Asia/Bangkok /etc/localtime && \
    apk del tzdata
## add permissions for nginx user
RUN sed -i 's/user  nginx;/#user nginx;/g' /etc/nginx/nginx.conf
RUN chown -R nginx:nginx /usr/share/nginx/html && chmod -R 755 /usr/share/nginx/html && \
    chown -R nginx:nginx /var/cache/nginx && \
    chown -R nginx:nginx /var/log/nginx && \
    chown -R nginx:nginx /etc/nginx/conf.d
RUN touch /var/run/nginx.pid && \
    chown -R nginx:nginx /var/run/nginx.pid
USER nginx
HEALTHCHECK --interval=60s --timeout=3s --start-period=5s \
  CMD curl --fail http://localhost || exit 1
EXPOSE 80

นำไปปรับแต่งใช้งานเพิ่มได้นะครับ :)

Arnon Kijlerdphon

Arnon Kijlerdphon

Go plant-based, it's good for you and the planet!. Board game Lover.
Bangkok, Thailand