使Ember前端和Flask后端通过单独的Docker容器进行通信

问题描述 投票:1回答:0

我已经用Flask构建了一个后端webapp dockerized。 DockerfileCMD行运行python app.py ,它内部调用app.run(host='0.0.0.0') ,因此该应用程序在docker容器中以0.0.0.0:5000 。 然后我用

$ docker run -p 5000:5000 -it my-image:latest

前端内置余烬。 在.ember-cli文件中, proxy设置为http://localhost:5000 。 当我在本地运行$ ember serve ,该应用程序在localhost:4200顺利运行​​,并与从docker映像运行的后端进行通信。 但是,我也想在docker映像(基于apache映像)上运行前端。 我的Dockerfile:

FROM httpd:2.4-alpine
COPY ./dist/ /usr/local/apache2/htdocs/
COPY ./.htaccess /usr/local/apache2/htdocs/

.htaccess文件是直接从Ember-Deploying复制的(根据“ Servers部分):

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.html [L]
</IfModule>

然后,我执行以下操作:

$ ember b --prod  # build the app for production (stored in ./dist/)
$ docker build -t my-frontend:latest .
$ docker run -dit --name my-frontend -p 8080:80 my-frontend:latest

然后,我转到localhost:8080 ,可以看到我的应用程序的加载轮,这意味着该映像正在单独工作。 但是,当它尝试访问后端时,我仍然收到404错误。

容器之间无法通信,我在做什么错?

docker flask ember.js
© www.soinside.com 2019 - 2024. All rights reserved.