前提情况
一个php容器、挂载站点文件至宿主
由于权限问题,可能需要运行这个命令:
chown -R www-data:www-data /var/www/html
处理
你可能回想到:
CMD chown -R www-data:www-data /var/www/html
但是,你会发现,容器一运行就关闭;
日志是空的。。。
在一番测试后,我得到如下结论:
在没有CMD语句的时候,容器启动时会执行一个默认命令,并这个命令不会立即结束;
而加上CMD语句,容器的默认命令被置空。
(你可以试试tail -f ***
,容器就会正常启动;但通过命令查询,发现apache2并没有启动)
查找官方示例:
https://github.com/docker-library/php/blob/3dc9a6988d478fae0f0b8b871d10e611b50e3d0c/7.2/buster/apache/Dockerfile
…….
COPY apache2-foreground /usr/local/bin/
WORKDIR /var/www/htmlEXPOSE 80
CMD [“apache2-foreground”]
猜测默认命令是:apache2-foreground
更改CMD:CMD chown -R www-data:www-data /var/www/html & apache2-foreground
构建,运行,正常~