我如何 运行 Angular 使用 docker-compose?

How can I run Angular using docker-compose?

我正在尝试从头开始创建自己的 MEAN 解决方案,我想使用 docker-compose 来运行它。我已经成功地使节点服务器工作,但是当我尝试使用 docker 运行 Angular 客户端时,它不起作用.

只需使用 docker 我 运行 以下命令:

docker build -t ng-client .

docker run -p 4200:4200 ng-client

从输出来看,它似乎在工作,但是当我转到 http://localhost:4200/ 时,我收到本地主机不工作的消息。

我在使用 docker-compose 时遇到了同样的问题:

docker-compose up

我的 Dockerfile 如下所示:

# based on https://mherman.org/blog/dockerizing-an-angular-app/
# base image
FROM node:8.9.3

# install chrome for protractor tests
# RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
# RUN sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
# RUN apt-get update && apt-get install -yq google-chrome-stable

# set working directory
RUN mkdir /usr/src/app
WORKDIR /usr/src/app

# add `/usr/src/app/node_modules/.bin` to $PATH
ENV PATH /usr/src/app/node_modules/.bin:$PATH

# install and cache app dependencies
COPY package.json /usr/src/app/package.json
RUN npm install

# add app
COPY . /usr/src/app

EXPOSE 4200

# start app
CMD npm start

而 docker-compose.yml 看起来像这样:

version: '3'
services:
  server:
    build: ./server
    ports:
    - '3000:3000'
  # db:
  #   build: mongo:4.1
  #   ports:
  #   - '27017:27017'
  client:
    build: ./client
    ports:
    - '4200:4200'

完整代码在 https://github.com/FrisoPrograms/MEANpress/tree/feature/initial-docker

尝试:

ng serve --host 0.0.0.0

让 angular 服务进程在 0.0.0.0 而不是本地主机上侦听请求。使用 --host 0.0.0.0 的原因是默认的 localhost 将不起作用,因为服务器默认绑定到 localhost,在这种情况下,服务器需要侦听所有请求,而不仅仅是来自 localhost 的请求。