ฉันกำลังสร้างอิมเมจ Docker สำหรับSymfony
แอปของฉันและฉันต้องให้สิทธิ์เซิร์ฟเวอร์ apache เพื่อเขียนลงในแคชและโฟลเดอร์บันทึก
#Dockerfile
FROM php:7-apache
RUN apt-get update \
&& apt-get install -y libicu-dev freetds-common freetds-bin unixodbc \
&& docker-php-ext-install intl mbstring \
&& a2enmod rewrite
COPY app/php.ini /usr/local/etc/php/
COPY app/apache2.conf /etc/apache2/apache2.conf
COPY ./ /var/www/html
RUN find /var/www/html/ -type d -exec chmod 755 {} \;
RUN find /var/www/html/ -type f -exec chmod 644 {} \;
RUN chmod -R 777 /var/www/html/app/cache /var/www/html/app/logs
เมื่อผมสร้างภาพนี้กับและใช้ภาชนะที่มีdocker build -t myname/symfony_apps:latest .
docker run -p 8080:80 myname/symfony_apps:latest
บันทึก Apache ถูกน้ำท่วมโดยข้อผิดพลาดที่ได้รับอนุญาตถูกปฏิเสธสิ่งที่แปลกที่ฉันตรวจสอบด้วยls -a
และสิทธิ์ใช้ได้ดี และเมื่อฉันรัน chmod จากการทุบตีของคอนเทนเนอร์ปัญหาการอนุญาต apache หายไปและแอปทำงานได้ดี
สถานการณ์
การรันคำสั่ง chmod จาก dockerfile: การอนุญาตมีการเปลี่ยนแปลง แต่ apache ยังคงบ่นเกี่ยวกับสิทธิ์ที่ถูกปฏิเสธ ใช้คำสั่ง chmod เดียวกันกับทุบตีในภาชนะ:สิทธิ์ถูกเปลี่ยนแปลงและแอพของฉันกำลังทำงาน
ความคิดใด ๆ ฉันมีบางสิ่งบางอย่างฉันควรเพิ่มผู้ใช้รูทใน Dockerfile หรือไม่?
apache2.conf
) ไม่ก่อให้เกิดปัญหาหรือไม่ ข้อผิดพลาดจะหายไปหากคุณไม่ได้ติดตั้งapache2.conf
?