Я докеризовал серверное веб-приложение, созданное с помощью Flask.CMD
строка Dockerfile
запускает 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
, связываясь с бэкэндом, запущенным из образа докера.Тем не менее, я также хочу запустить интерфейс на образе докера (на основе образа Apache).Мой Dockerfile:
FROM httpd:2.4-alpine
COPY ./dist/ /usr/local/apache2/htdocs/
COPY ./.htaccess /usr/local/apache2/htdocs/
Файл .htaccess
копируется непосредственно из Ember - Развертывание (согласно разделу Servers
):
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.html [L]
</IfModule>
Iзатем выполните следующее:
$ 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 ошибки, когда он пытается получить доступ к бэкэнду.
Что я делаю неправильно, что контейнеры не могут связываться друг с другом?