ใช้งาน 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
นำไปปรับแต่งใช้งานเพิ่มได้นะครับ :)