Я пытаюсь создать файл Docker Compose для построения моего локального конвейера разработки и развертывания для проекта ReactJS.
Некоторый контекст : Локально я запускаю сервер на 3000
порту. Для развертывания я экспортирую статические артефакты, развертываю их на S3 и делаю недействительными мои файлы CloudFront.
Я создал Docker Image , который содержит узел и интерфейс командной строки AWS, и я использую его в качестве своей базы FROM
Image.
Dockerfile
FROM a6kme/node-aws-cli:v1
WORKDIR /app
COPY package*.json /app/
RUN npm install
EXPOSE 3000
докер-compose.yml
version: '3'
volumes:
esnextwebjourney_node_modules:
services:
esnextwebjourney:
build: .
volumes:
- .:/app
- esnextwebjourney_node_modules:/app/node_modules
ports:
- 3000:3000
command: >
sh -c "npm run build && npm run start"
Что работает, но каждый раз, когда мне нужно идти и обновлять команду, нужно либо запустить сервер npm run build && npm run start
, либо развернуть его на s3 и CloudFront, т.е. npm run build && npm run export && npm run deploy
.
Мой вопрос -
Могу ли я создать файл docker-compose.yml, как показано ниже, и тогда я могу позвонить docker-compose run start --build
или docker-compose run deploy --build
, и это будет служить обоим моим целям.
version: '3'
volumes:
esnextwebjourney_node_modules:
services:
build:
build: .
volumes:
- .:/app
- esnextwebjourney_node_modules:/app/node_modules
command: npm run build
start:
depends_on:
- build
command: npm run start
ports:
- 3000:3000
export:
depends_on:
- build
command: npm run export
deploy:
depends_on:
- export
command: npm run deploy