Docker容器中Apache反向代理的最小配置

Xophmeister

我正在尝试设置一个在端口9000上运行Node.js HTTP应用程序的Ubuntu Docker容器。为了模拟生产环境的设置,我还想将Apache作为容器中的简单反向代理服务器运行,并将其转发到此容器例如来自端口80的应用程序(我暴露给了糟糕的世界)。

我已经能够很好地设置Node.js应用容器,并且可以在自己的容器中安装和设置Apache Dockerfile但是我对设置反向代理完全陌生,因此虽然Apache当然可以启动,但它不代理。

Dockerfile看起来像:

# DOCKER-VERSION 1.3.0
FROM    ubuntu:12.04

# Install and set up Apache as a reverse proxy
RUN     apt-get -y install apache2 libapache2-mod-proxy-html
COPY    apache2.conf /etc/apache2/app.conf
RUN     cat /etc/apache2/app.conf >> /etc/apache2/apache2.conf
RUN     service apache2 start

# Install and set up Node.js and bundle app
# ...This works...

EXPOSE  80
CMD     ["./start-app.sh"]

...apache2.conf我要附加的位置/etc/apache2/apache2.conf是:

ServerName localhost

LoadModule proxy_module      /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so
LoadModule headers_module    /usr/lib/apache2/modules/mod_headers.so
LoadModule deflate_module    /usr/lib/apache2/modules/mod_deflate.so

<Proxy *>
  Order deny,allow
  Allow from all
</Proxy>

ProxyPass        / http://localhost:9000/
ProxyPassReverse / http://localhost:9000/

我正在使用以下命令运行此映像:

docker run -p 80:80 -p 81:9000 -d IMAGE

我期望的是http://$DOCKER_HOSTApache会选择前往(即根目录)并转发到localhost:9000容器中的(即我的应用程序)。(如果我转至http://$DOCKER_HOST:81,我会直接进入该应用程序;只是为了证明它已启动并正在运行。这是可行的。)我怀疑问题根本不是与Docker有关,而是与Apache配置有关。

托马斯列维尔

在您的Dockerfile中,RUN语句定义在构建Docker映像时将由Docker守护程序运行的命令。使用docker run命令时,这些命令将不会执行

在您的情况下,您尝试提出一个将启动两个过程的docker映像:

  • apache服务器
  • nodejs服务器

但是其中的start-app.sh脚本CMD ["./start-app.sh"]似乎只能启动nodejs服务器。

您不能让docker run命令启动一个以上的进程,但是可以使命令启动一个将启动其他进程的进程。有多种方法可以实现此目的,请看一下:

但更简单地说,您可以将CMD指令替换为:

CMD     /bin/bash -c "service apache2 start; ./start-app.sh"

并删除无用的RUN service apache2 start行。

在您的容器中,Docker将启动一个进程(/bin/bash),该进程又将启动apache然后运行./start-app.sh

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Docker容器的Apache2反向代理配置

来自分类Dev

Apache 反向代理配置更改

来自分类Dev

连接被拒绝:Docker容器中的Nginx HTTPS反向代理

来自分类Dev

Flask + Nginx反向代理拒绝在Docker容器中连接

来自分类Dev

Docker Nginx 反向代理保护 Docker 容器

来自分类Dev

Kibana 5.0 Apache代理和反向代理配置失败

来自分类Dev

反向代理中的所有 docker 容器都重定向到同一域

来自分类Dev

如何启用Apache作为Docker容器的代理?

来自分类Dev

Apache从80端口到8000端口的反向代理配置

来自分类Dev

我被困在尝试使用 apache 配置 SSL 反向代理

来自分类Dev

apache反向代理hhtps

来自分类Dev

使用 apache 反向代理

来自分类Dev

NGINX作为另一个容器上的反向代理-如何配置配置文件

来自分类Dev

在我的Apache Docker容器中,如何设置代理来路由其他代理未处理的所有内容?

来自分类Dev

在Docker容器中的代理后面获取git

来自分类Dev

在Docker容器中的代理后面获取git

来自分类Dev

Apache反向代理中的Google OAuth重定向Uri

来自分类Dev

NGINX反向代理配置结构

来自分类Dev

如何配置nginx反向代理

来自分类Dev

Docker 中的基本反向代理:禁止(无权限)

来自分类Dev

Apache反向代理匹配请求

来自分类Dev

Apache反向代理无限循环

来自分类Dev

Apache骆驼作为反向代理

来自分类Dev

docker 容器之间的代理

来自分类Dev

设置Nginx反向代理以从另一个Docker容器提供服务

来自分类Dev

从开发机器上 Service Fabric 上的 Docker 容器访问反向代理

来自分类Dev

显示默认站点的容器化反向代理

来自分类Dev

如何通过从路径中提取主机来将 Apache 配置为反向代理

来自分类Dev

如何将 apache 配置为 asp.net core 的反向代理

Related 相关文章

热门标签

归档