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/

    相关文章:

    linux - CHECK_GEARMAN CRITICAL - 函数 'BulkEmail' 未在服务器中注册

    apache - HTaccess 重定向正在将查询添加到 URL 末尾

    php - 计算完全下载的文件

    git - Docker构建特定的本地git分支

    c - 预期 ‘;’ 在 ‘{’ token 行 28 之前

    centos - 如何在不使用 Apache 和 PHP 的情况下在一台 VM 上安装 Nagios 以检查另一台 VM(客户端)的特定统计信息?

    python - 如何阻止 WSGI 挂起 apache

    php - IIS7 重写规则?

    docker - 在Docker的多个容器中共享同一资源

    java - DC/OS JMX 访问 java 应用程序