我有一个像这样构建的角度库:
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
并进行开发。
答案 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"