Вы знаете, что сейчас я пытаюсь создать сеть в одном контейнере докеров и использовать объем, чтобы получить dist после сборки, и запустить контейнер nginx для развертывания папки dist. Это сценарий docker-compose:
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 запускается и успешно завершается и генерирует папку dist в папке jump-ui, но когда я пытаюсь "docker exec -it" получить доступ к службе nginx и переключиться на / usr / share / nginx / html, это папка empy, поэтому мне нужно вручную запустить службу jump-ui-build и запустить службу nginx, и она успешно развернется?
Есть ли способ изменить сценарий yum, который я могу успешно создавать и автоматически развертывать в Интернете?
1 ответ
Вы можете использовать multistage
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
build:
вместо image:
, а затем используйте docker-compose up -d --build
FROM node:12.13.0 AS builder
, а затем COPY --from=builder
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Обратите внимание, что JavaScript — это НЕ Java. Включите все теги, относящиеся к вашему вопросу: например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [стройный] и т. д.