使用nginx编写docker和多级dockerfile

使用nginx编写docker和多级dockerfile,docker,nginx,docker-compose,Docker,Nginx,Docker Compose,我遇到了一个问题,我的Docker文件在Docker compose之外运行良好,但在Docker compose中使用时,我的Nginx目标没有正确安装在/usr/share/Nginx/html中 docker-compose.yml version: "3.7" services: web: build: context: ./web dockerfile: Dockerfile-development volumes: - ./w

我遇到了一个问题,我的Docker文件在Docker compose之外运行良好,但在Docker compose中使用时,我的Nginx目标没有正确安装在
/usr/share/Nginx/html

docker-compose.yml

version: "3.7"

services:
  web:
    build:
      context: ./web
      dockerfile: Dockerfile-development
    volumes:
      - ./web:/web
      - ./web/node_modules/
    env_file:
      - .env-web
  nginx:
    build:
      context: ./web
      dockerfile: Dockerfile-development
      target: nginx
    volumes:
      - ./web/nginx/default.conf:/etc/nginx/conf.d
      - ./web/build:/usr/share/nginx/html
    ports:
      - "80:80"
    depends_on:
      - web
dockerfile开发

FROM node:9.8.0 as web

ARG APP_ENV=development

WORKDIR /web
COPY package.json /web/package.json
RUN npm install
COPY . /web

RUN npm run build-development

FROM nginx:1.14 as nginx
COPY --from=web /web/build /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
因此,如果我在Docker compose外部构建并运行
Docker文件开发
,一切正常,Nginx启动,但如果我使用
Docker compose up
,图像构建并运行时不会出现错误,但在容器中找不到Nginx

编辑
我发现问题在于运行
webpack的
build development
——watch
。这导致nginx根本不运行。我可以在后台运行带有watch标志的两个网页包,并且让docker继续构建和运行nginx容器吗?

请注意,
docker compose up
不会重建您已经存在的图像。如果显式运行
docker compose build
?在运行
docker compose up
之前,您还需要运行
docker compose down
,以删除任何现有的容器。请注意,如果我抓取您的示例并创建
docker compose build
图像,
nginx
完全按照您的预期提供。好,现在我明白了为什么nginx一开始不起作用了。我的构建阶段
web
正在进行
webpack--watch
,它最终只是在前台运行,从未退出过,而nginx也从未构建过。谢谢拉尔克斯!