首页 > 解决方案 > Angular + Docker:docker-compose 的麻烦

问题描述

我为我的 Angular 应用程序准备了 Dockerfile,如下所示:

FROM node:11.6.0-alpine AS builder
COPY . ./ToDoApp
WORKDIR /ToDoApp
RUN npm i
RUN $(npm bin)/ng build --prod

FROM nginx:1.15.8-alpine
COPY --from=builder /ToDoApp/dist/ToDoApp/ /usr/share/nginx/html

我使用命令:

docker build --rm -t todoapp:latest .
docker run --rm -d -p 90:80/tcp todoapp:latest

并且网站在available:90上可用。

不,我尝试准备 docker-compose.yml 用于运行我的网站和其他服务。除我的网站外,一切正常。我不知道为什么它不起作用。我仍然收到一条消息“todoapp exited with code 0”。

我的 docker-compose.yaml:

services:
  todoapp:
    container_name: todoapp
    restart: always
    build:
      context: ./ToDoApp
      dockerfile: Dockerfile
    ports:
      - "4200:80"
    volumes:
      - .:/usr/share/nginx/html

任何人都可以帮助我吗?

标签: angulardockerdocker-compose

解决方案


如果你想让你的容器在分离模式下运行,你需要在前台运行一些东西。一个简单的方法是将/dev/null设备作为 Docker 映像的CMDENTRYPOINT命令来尾随。

在 docker 文件中添加以下内容作为最后一步

CMD tail -f /dev/null

http://bigdatums.net/2017/11/07/how-to-keep-docker-containers-running/


推荐阅读