Javascript 我可以在一个docker容器中构建web并在另一个docker容器中部署它吗?

Javascript 我可以在一个docker容器中构建web并在另一个docker容器中部署它吗?,javascript,docker,nginx,docker-compose,Javascript,Docker,Nginx,Docker Compose,您知道,我现在正在尝试在一个docker容器中构建web,并在构建之后使用volume获取dist,然后启动nginx容器来部署dist文件夹。 这是docker编写脚本: version: '3' services: jump-ui-build: image: node:12.13.0 volumes: - ~/jump-ui:/usr/local/app working_dir: /usr/local/app ports: - 80

您知道,我现在正在尝试在一个docker容器中构建web,并在构建之后使用volume获取dist,然后启动nginx容器来部署dist文件夹。 这是docker编写脚本:

version: '3'
services:
  jump-ui-build:
    image: node:12.13.0
    volumes:
      - ~/jump-ui:/usr/local/app
    working_dir: /usr/local/app
    ports:
      - 8082:8082
    command: bash -c "npm install && npm run build:test"

  nginx:
    restart: always
    image: nginx:1.16.1
    ports: 
      - 80:80
      - 443:443
    volumes:
      - ~/jump-ui/dist:/usr/share/nginx/html
      - ~/nginx-log:/var/log/nginx
    depends_on:
      - jump-ui-build
jump ui build服务成功运行并完成,并在jump ui文件夹下生成dist文件夹,但当我尝试“docker exec-it”访问nginx服务并切换到/usr/share/nginx/html时,它是empy文件夹,因此我必须手动启动jump ui build服务并启动nginx服务,并且它成功部署


是否有任何方法可以修改我可以自动成功构建和部署web的yum脚本?

您可以使用
多级
Dockerfile:

FROM node:12.13.0
WORKDIR /usr/local/app
RUN bash -c "npm install && npm run build:test"

FROM nginx:1.16.1
COPY --from=0 /usr/local/app /usr/share/nginx/html
EXPOSE 80 443
这样,您将得到一个
nginx
图像,构建它:

docker build -t my_image .
你的作文应该是:

nginx:
    restart: always
    image: my_image
    ports: 
      - 80:80
      - 443:443
    volumes:
      - $HOME/nginx-log:/var/log/nginx

我不确定你想让docker创作这样的作品。您可以使用多个docker映像来构建然后部署。在Vue~@Phil中看到这个例子我以前读过这个页面,但是你知道这个教程不是我的经验,它是在同一个容器中构建和部署的,我只想把它们分成两个docker容器,一个用于构建,一个用于部署。我应该怎么做来放置“docker build-t”在我执行docker compose up-d之前进入docker compose?如果您不想启动映像,可以在compose中构建docker文件,使用
build:
指令而不是
image:
,然后使用
docker compose up-d--build
我的意思是我想使用一个脚本docker compose up-d来启动映像,顺序是先构建web,然后部署,只使用一个脚本,谢谢!为了更好地阅读:您可以将
从节点:12.13.0作为生成器编写,然后
复制--FROM=builder