Angular库,监视和Docker

时间:2019-05-23 17:05:21

标签: angular docker docker-compose angular-cli

我有一个像这样构建的角度库: ng build my-library -- --watch和一个dist目录已生成。

我在package.json中有一个虚拟的角度应用程序来测试我的媒体库: docker:start : ng serve --host 0.0.0.0 --poll 1

在终端中运行时,在开发过程中,我在一个终端中运行build,在另一个终端中运行应用。当我进行更改时,构建会选择它们,一旦构建了新库,服务就会接受更改,然后在浏览器中看到它们。

我试图像这样在Docker中重新创建它:

FROM node:10-alpine

WORKDIR /app

EXPOSE 4200

# Install Angular/CLI to use `ng`
RUN npm install -g @angular/cli

# My Application
COPY ./package*.json ./
RUN npm install

# Build ./dist/my-library
COPY ./ ./
RUN cd ./projects/my-library && npm run build

CMD ["npm","run","docker:start"]

我的docker-compose.yml

version: '3'
services:
  app:
    container_name: 'app'
    build:
      context: .
      dockerfile: Dockerfile.dev
    ports:
      - '4200:4200'
    volumes:
      - /app/node_modules
      - .:/app

我希望能够像在多个终端中一样运行docker-compose up并进行开发。

1 个答案:

答案 0 :(得分:0)

如果要模拟多个终端,则可以在docker-compose中运行多个“服务”:

version: '3'
services:
  app:
    container_name: 'app'
    build:
      context: .
      dockerfile: Dockerfile.dev
    ports:
      - '4200:4200'
    volumes:
      - /app/node_modules
      - .:/app
  lib:
    container_name: 'lib'
    build:
      context: .
      dockerfile: Dockerfile.dev
    volumes:
      - /app/node_modules
      - .:/app
    command: sh -c 'ng build my-library -- --watch'

这是我经常使用的应用程序/测试docker-compose定义的示例:

version: '3.7'
services:
  web:
    image: node:12-alpine
    volumes:
      - .:/src/app:cached
    ports:
      - 4200:4200
    working_dir: /src/app
    command: /bin/sh -c "npm install && npm run start-docker"
  tests:
    image: node:12-alpine
    volumes:
      - .:/src/app:cached
    working_dir: /src/app
    command: /bin/sh -c "npm install && npm run test:watch"