Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – Docker容器中Apache反向代理的最小配置大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试设置一个Ubuntu Docker容器,它在端口9000上运行Node.js http应用程序.为了模仿生产环境的设置,我还希望将Apache作为一个简单的反向代理服务器运行在容器中,转发给它来自端口80的应用程序(我向大坏世界揭露).

我已经能够很好地设置Node.js应用程序容器了,我可以在我的Dockerfile中安装和设置Apache;但我对设置反向代理完全不熟悉,所以当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"]

…我附加到/etc/apache2/apache2.conf的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_HOST(即根)将由Apache获取并转发到容器中的localhost:9000(即我的应用程序). (如果我转到http:// $DOCKER_HOST:81,我会直接进入应用程序;只是为了证明它已启动并运行.这有效.)我怀疑这个问题与Docker完全无关,但是Apache配置.

解决方法

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

在您的情况下,您正试图想出一个可以启动两个进程的docker镜像:

> apache服务器
> nodejs服务器

但是CMD中的start-app.sh脚本[“./start-app.sh”]似乎只启动了nodejs服务器.

你不能让docker run命令启动更多的进程,但你可以让它启动一个启动其他进程的进程.有不同的方法来实现这一点,看看:

> Using Supervisor
> Phusion baseimage

但更简单的说,你可以用以下代码替换你的CMD指令:

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

删除无用的RUN服务apache2起始行.

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

大佬总结

以上是大佬教程为你收集整理的node.js – Docker容器中Apache反向代理的最小配置全部内容,希望文章能够帮你解决node.js – Docker容器中Apache反向代理的最小配置所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。