Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
BlueMix上的Apache2容器无法保存_Apache_Docker_Containers_Ibm Cloud_Dockerfile - Fatal编程技术网

BlueMix上的Apache2容器无法保存

BlueMix上的Apache2容器无法保存,apache,docker,containers,ibm-cloud,dockerfile,Apache,Docker,Containers,Ibm Cloud,Dockerfile,我从IBM的形象开始: registry.ng.bluemix.net/ibmnode:latest 它是Ubuntu14.04,然后我添加了Apache2,对我的站点做了一些文件拷贝,然后公开443。最后,我使用以下命令调用bash脚本: #!/bin/bash set -e rm -f /usr/local/apache2/logs/httpd.pid exec /usr/sbin/apache2ctl -DFOREGROUND 当我在本地运行容器时,它运行良好,满足了我的需要。当Blu

我从IBM的形象开始:

registry.ng.bluemix.net/ibmnode:latest
它是Ubuntu14.04,然后我添加了Apache2,对我的站点做了一些文件拷贝,然后公开443。最后,我使用以下命令调用bash脚本:

#!/bin/bash
set -e
rm -f /usr/local/apache2/logs/httpd.pid
exec /usr/sbin/apache2ctl -DFOREGROUND
当我在本地运行容器时,它运行良好,满足了我的需要。当BlueMix从Dockerfile构建时,它不会出错。然后成功部署到容器。部署后,容器立即注册为“已停止”。重新启动会使它启动,然后在几秒钟内返回cf ic logs my process id“未显示任何反馈

我尝试过的其他事情: 入口点[/usr/sbin/apache2ctl,-D,前景] 使用服务apache2重新启动

Dockerfile:

FROM registry.ng.bluemix.net/ibmnode:latest

RUN apt-get install -y apache2
RUN apt-get install -y nano


# ADD SSL
RUN a2enmod ssl
RUN a2enmod proxy_http


WORKDIR /var/www/dist
RUN mv ./* /var/www/html

COPY docker/httpd-foreground.sh /usr/local/bin/
EXPOSE 443
CMD ["httpd-foreground.sh"]
httpd-foreground.hs:

#!/bin/bash
set -e
rm -f /usr/local/apache2/logs/httpd.pid
exec /usr/sbin/apache2ctl -DFOREGROUND

您要做的是获取节点映像,安装apache并重写该命令,然后尝试在前台运行。这并不是在bluemix上运行apache容器的好方法

你应该这样做: 1.按照这里的信息将httpd映像拉到本地,将本地映像推到bluemix名称空间。 -docker pull httpd:2.4 -docker标记httpd:2.4 registry.ng.bluemix.net//httpd -docker push registry.ng.bluemix.net//http 2.一旦图像被推送到您的名称空间,您就可以使用Dockerfile创建自定义图像,请注意,我假设您的网站内容位于公共html文件夹中

来自registry.ng.bluemix.net//httpd:2.4副本./public html/ /usr/local/apache2/htdocs/EXPOSE 80

树立你的形象 运行容器: 绑定IP地址,使用 使用绑定的IP访问容器
有日志吗?当主应用程序PID 1停止时,容器停止。无。此外,我在本地构建了docker容器,在BlueMix注册表中注册,将其部署到一个容器中,然后poof,它工作得很好。因此,问题仅限于Dockerfile在BlueMix构建阶段中的处理和构建时间。您可以发布Dockerfile吗?或者至少显示ENTRYPOINT和CMD条目。使用script和dockerfile更新上述内容。您能否尝试调试并查看exec部分是否立即返回?bash脚本是PID 1,因此exec命令不应返回,因为它将关闭。没有任何日志,这很难。您还可以尝试强制等待apacheprocess完成删除exec和-DFOREGROUND并在末尾放置&然后放置waitpid$!在下一行,我很感激你的回答,但这让我感到担忧。您尚未解决BM管道中的问题。为什么BM从dockerfile构建时不会产生与我在本地构建时相同的结果。应该是对称的。第二,假设我正确设置了apache,我应该能够从任何基本映像运行apache服务器。当Docker的整个目标是构建你喜欢的东西时,为什么要有人从一个特定的HTTPD映像开始呢?
cf ic build --tag myhttp .
cf ic run --name myhttp -p 80 registry.ng.bluemix.net/<yourNameSpace>/myhttp
cf ic bind <IP> myhttp