【发布时间】:2019-02-27 14:32:11
【问题描述】:
我有一个与this one 非常相似的问题。
我确实有一个 Angular 应用程序,它收集数据,然后通过 REST Api 进行处理。我可以愉快地对这两个应用程序进行 docker 化,并且它们在本地运行良好,但是,当我尝试部署它们以使它们可以从“任何地方”访问时,我只能到达前端,但是与 REST Api 的连接不起作用。
在我的 Angular 应用程序中,我有一个文件 baseurl.ts。那只包含:
export const baseURL = 'http://localhost:3000/';
我使用以下方法准备应用程序生产:
ng build --prod
创建 dist 文件夹,然后创建以下 docker 容器(取自 here):
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
REST Api 的第二个Dockerfile 如下所示:
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 上运行时,一切都按预期工作。我现在如何让这两个容器相互通信以进行“全局”部署?
【问题讨论】:
标签: angular docker deployment docker-compose web-deployment