сдев.ш | Кодементор
Я настраивал большинство своих сред разработки за последние 3 года, используя докер а также docker-compose без всяких важный вопросы. Сказав это, за последние пару месяцев я повторял следующий сценарий (с некоторыми вариациями в каждом конкретном случае) в большинстве своих проектов.
#!/bin/bash
case "$1" in
server)
docker-compose -f docker/docker-compose.yml run --rm -p 8080:8080 yarn start
;;
build)
docker-compose -f docker/docker-compose.yml run --rm app yarn build
;;
test)
docker-compose -f docker/docker-compose.yml run --rm app yarn test
;;
bash)
docker-compose -f docker/docker-compose.yml run --rm -p 8080:8080 server /bin/bash
;;
esac
Я всегда заканчивал тем, что звонил docker-compose
в зависимости от задачи, которую мне нужно выполнить с некоторыми вариантами флагов или аргументов.
В то же время я провел некоторое время, работая над разными проектами, которые имели несколько способов запуска и не имели простой документации о том, какие задачи были доступны внутри проекта.
Я понял, что этот небольшой скрипт, который я продублировал в большинстве своих приложений, можно было бы лучше выразить в декларативной форме, используя файл yaml.
сдев.ш цель проста, простой декларативный синтаксис для ваших задач проектов.
Предыдущий сценарий bash теперь выражается как:
version: 1
name: My Cool App
description: This text should briefly mention what the application/library is about
docker:
compose_file: docker/docker-compose.yml
tasks:
- name: server
description: Start the development server
command: yarn start
container: app
rm: true
ports:
"8080:8080"
- name: build
description: This command will build the entire application and install dependencies
command: yarn build
container: app
rm: true
- name: test
description: run unit test suite.
command: yarn test
container: app
- name: bash
description: ssh in docker container
command: /bin/bash
container: app
ports:
"8080:8080"
Используя этот файл yaml в качестве входных данных, sdev сгенерирует для вас следующую команду.
➜ sdev.sh git:(improve-readme) ✗ sdev
Usage: sdev [options] [command]
This text should briefly mention what the application/library is about
Options:
-V, --version output the version number
-h, --help output usage information
Commands:
build This command will build the entire application and install dependencies
test run unit test suite.
bash ssh in docker container
help [cmd] display help for [cmd]
Код является открытым исходным кодом и может быть найден здесь.
Я ищу более интересные функции, которые можно было бы встроить в sdev.sh. Если вы считаете, что этот инструмент может быть полезен в ваших проектах, я хочу услышать об этом. . Пингуйте меня в [email protected]
Наслаждайтесь 🎉
*****
Написано Мартин Фернандес на 28 февраля 2018 г.