apache - 更改添加文件对Docker卷的权限

原文 标签 apache docker nagios

Docker best practices guide中指出:

You are strongly encouraged to use VOLUME for any mutable and/or user-serviceable parts of your image.



并且通过查看例如的源代码cpuguy83/nagios image可以清楚地看到已经完成,因为从nagios到apache config目录的所有内容都可以作为卷使用。

但是,默认情况下,查看同一张图片,apache服务(以及nagios的cgi-scripts)以nagios用户身份运行。所以现在我很烦,因为我似乎无法弄清楚如何添加自己的配置文件以例如为nagios监视定义更多主机。我试过了:
FROM cpuguy83/nagios
ADD my_custom_config.cfg /opt/nagios/etc/conf.d/
RUN chown nagios: /opt/nagios/etc/conf.d/my_custom_config.cfg
CMD ["/opt/local/bin/start_nagios"]

我正常构建,并尝试使用docker run -d -p 8000:80 <image_hash>运行它,但是我收到以下错误:

Error: Cannot open config file '/opt/nagios/etc/conf.d/my_custom_config.cfg' for reading: Permission denied



确实,该文件夹中的权限如下所示(apache进程以nagios运行):
# ls -l /opt/nagios/etc/conf.d/
-rw-rw---- 1 root root 861 Jan  5 13:43 my_custom_config.cfg

现在,使用this has been answered before (why doesn't chown work in Dockerfile),但是除了“更改原始Dockerfile”之外,没有其他适当的解决方案。

老实说,我认为这里没有掌握一些核心概念(因为我看不到将配置目录声明为VOLUME或将服务运行为除root以外的其他服务)-因此提供了上述Dockerfile(如下)解决方案/问题是通过添加多个卷来实现的Docker最佳实践):
  • 要将NAGIOS_USER / APACHE_RUN_USER更改为'root'并以root用户身份运行所有内容?
  • 要为nagios删除Dockerfile中的VOLUME声明?
  • 其他方法?

  • 您将如何使用自己的配置文件扩展nagios dockerfile above

    最佳答案

    由于您是在构建时将自己的my_custom_config.cfg文件直接添加到容器中,因此只需更改主机上my_custom_config.cfg文件的权限,然后使用docker build即可构建镜像。主机权限将复制到容器镜像中。

    关于apache - 更改添加文件对Docker卷的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27784814/

    相关文章:

    php - 在Python WSGI环境中运行PHP脚本

    php - 找不到包装器 "https"- 您是否在配置 PHP 时忘记启用它?

    bash - docker exec 命令的结果

    docker - 如何在Spark中设置FTP被动模式?…以从FTP服务器读取文件

    Docker 链接容器作为构建参数

    python - Python定制的Nagios脚本和漂亮的汤-收到“NRPE:无法读取输出”

    mysql - nagios如何通过shell脚本监视远程主机?

    java - org.apache导入无法解决

    sql - 与数据库的连接失败。 Tomcat Apache

    database - 填充NAGIOS主机以从数据库中获取状态数据