У меня очень похожий вопрос, как этот .
У меня есть приложение Angular, которое собирает данные, которые затем обрабатываются через REST Api.Я могу с радостью докеризировать оба приложения, и они отлично работают локально, однако, когда я пытаюсь развернуть их, чтобы сделать их доступными «везде», я могу добраться только до внешнего интерфейса, но соединение с REST Api не работает.
Внутри моего приложения Angular у меня есть файл baseurl.ts
.Это просто содержит:
export const baseURL = 'http://localhost:3000/';
Я готовлю производство приложения, используя:
ng build --prod
, который создает папку dist
, а затем следующий док-контейнер (взятый из здесь):
FROM node:alpine AS builder
ARG PROXY=http://myproxy
ARG NOPROXY=localhost,127.0.0.1
ENV http_proxy=${PROXY}
ENV https_proxy=${PROXY}
ENV NO_PROXY=${NOPROXY}
ENV no_proxy=${NOPROXY}
WORKDIR /app
COPY . .
RUN npm install && \
npm run build
FROM nginx:alpine
COPY --from=builder /app/dist/* /usr/share/nginx/html/
Я создаю контейнер, используя
docker build -t form_angular:v1
и запускаю его, используя
docker run -d -p8088:80 form_angular:v1
Второй Dockerfile
для REST Apiвыглядит так:
FROM continuumio/miniconda3
ARG PROXY=http://myproxy
ARG NOPROXY=localhost,127.0.0.1
ENV http_proxy=${PROXY}
ENV https_proxy=${PROXY}
ENV NO_PROXY=${NOPROXY}
ENV no_proxy=${NOPROXY}
COPY my_environment.yml my_environment.yml
SHELL ["/bin/bash", "-c"]
RUN echo "Using proxy $PROXY" \
&& touch /etc/apt/apt.conf \
&& echo "Acquire::http::Proxy \"$PROXY\";" >> /etc/apt/apt.conf \
&& cat /etc/apt/apt.conf \
&& apt-get -q -y update \
&& DEBIAN_FRONTEND=noninteractive apt-get -q -y upgrade \
&& apt-get -q -y install \
build-essential \
&& apt-get -q clean \
&& rm -rf /var/lib/apt/lists/*
RUN ["conda", "env", "create", "-f", "my_environment.yml"]
COPY user_feedback.py user_feedback.py
CMD source activate my_environment; gunicorn -b 0.0.0.0:3000 user_feedback:app
Здание:
docker build -t form_rest:latest .
Запуск:
docker run --name form_rest -d -p 3000:3000
Как я уже сказал, все работает, как и ожидалось, при работе на localhost
.Как мне теперь заставить эти два контейнера общаться между собой для «глобального» развертывания?