如何使用 docker-compose 运行 Angular?

Fri*_*iso 1 docker mean-stack docker-compose angular

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

仅使用 docker 我运行以下命令:

docker build -t ng-client .

docker run -p 4200:4200 ng-client

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

当我使用以下命令使用 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
Run Code Online (Sandbox Code Playgroud)

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'
Run Code Online (Sandbox Code Playgroud)

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

Kou*_*sic 6

尝试:

ng serve --host 0.0.0.0
Run Code Online (Sandbox Code Playgroud)

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