我已经用Flask构建了一个后端webapp dockerized。 Dockerfile
的CMD
行运行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错误。
容器之间无法通信,我在做什么错?