Как я могу запустить Angular, используя docker-compose? - PullRequest
0 голосов
/ 12 октября 2018

Я пытаюсь создать собственное решение MEAN с нуля, и я хочу использовать docker-compose для его запуска.Мне удалось заставить сервер Node работать, но когда я пытаюсь запустить клиент Angular , используя docker, это не работает.

Просто используя 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

И 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

1 Ответ

0 голосов
/ 12 октября 2018

Try:

ng serve --host 0.0.0.0

Пусть процесс angular serve прослушивает запросы на 0.0.0.0 вместо localhost.Причиной использования --host 0.0.0.0 является то, что по умолчанию localhost не будет работать, так как сервер по умолчанию привязывается к localhost, и в этом случае сервер должен прослушивать все запросы, а не только запросы, поступающие на localhost.

...