如何结合 Nginx 和 NodeJS Docker 容器

How to combine a Nginx and a NodeJS Docker container

我有一个托管后端的 nodejs 容器,还有一个托管我的 Angular.

的 nginx 容器

它们都工作正常。我可以访问我的 nodeJS 容器,也可以访问我的 Nginx 容器。

问题是容器之间似乎没有连接。 nginx 容器仅托管包含 angular 但没有来自 NodeJS 的 /dist 文件夹。

是否必须为此编辑 /etc/nginx/nginx.conf--link 命令?

我在某处看到你的 nodejs 和 nginx 会自动绑定。

我的后端是 运行 8888,前端是 8080。

nginx dockerfile(npm install 等已在 jenkins 中执行)

FROM nginx
COPY dist /usr/share/nginx/html/dist

FROM node

Nodejs dockerfile

RUN mkdir -p /usr/src/test
WORKDIR /usr/src/test 

COPY node_modules /usr/src/test/
COPY server.js /usr/src/test/

EXPOSE 8080
CMD [ "node", "server.js" ]

我通过表演开始他们:

docker run -d -p 80:80 --name "app" localhost:5000/test/nginx-image:1

docker run -d -p 8888:8888 --name "app-" localhost:5000/test/nodejs-image:1

您需要 link 容器。此外,当 containera 与 containerb 对话时,它将使用 http://container-name not http://localhost 因此您的代码应该考虑到这一点。您会注意到,当您使用 link 时,容器内的 docker 会在主机文件中添加一个条目来实现此效果。使用环境变量,这样您就可以灵活地向其发出请求的域名。并在 运行 容器

时传递此环境变量

确保您公开容器之间的正确端口