go-compose

command module
v0.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 20, 2020 License: MIT Imports: 1 Imported by: 0

README

Go Compose

Build LICENSE

A lightweight services composer written in Golang for managing services (processes) in a development environment.


Installation

  • Using go get:

    go get github.com/hadialqattan/go-compose
    mv $GOPATH/bin/go-compose /usr/local/bin
    
  • Build from the source:

    git clone https://github.com/hadialqattan/go-compose.git
    cd go-compose/
    ./scripts/install.sh # may needs root privileges.
    

Usage

$ go-compose start # --config path/to/go-compose.yaml [default=./go-compose.yaml].

go-compose.yaml

services:
  service_name:
    ignore_failures: false
    sub_service: false
    auto_restart: true
    hooks:
        wait: 
            - another_service_name
        stop:
            - another_service_name
        start:
            - another_service_name
    cwd: .
    command: echo "shell script"
    environs:
      ENVIRONMENT_VARIABLE: true
  • services: a set of services to run.
  • ignore_failures: don't stop other services when this failed.
  • sub_service: don't start this service. this may be started by another service using the start hook.
  • auto_restart: automatically restart this service if it crashed.
  • hooks:
    • wait: wait for other services to stop before starting (setup).
    • stop: stop other services on exit (teardown).
    • start: start other services/sub-services on exit (teardown).
  • cwd: where the command will be executed (Command Work Directory).
  • command: a unix shell command.
  • environs: environment variables.

A real world example:

services:

  webapp:
    ignore_failures: true
    auto_restart: true
    hooks:
      start:
        - cleanup
    cwd: .
    command: |
      docker build .
      docker run --rm \
        --name webapp \
        --link db \
        -v ${PWD}:/webapp -w /webapp webapp
    environs:
      - POSTGRES_USER=webapp_admin
      - POSTGRES_PASSWORD=db0123
      - POSTGRES_DB=db

  postgres_db:
    ignore_failures: true
    auto_restart: true
    cwd: .
    command: |
      sleep 3
      docker run --rm \
        --name db postgres:12.0-alpine
    environs:
      - POSTGRES_USER=webapp_admin
      - POSTGRES_PASSWORD=db0123
      - POSTGRES_DB=db

  cleanup:
    sub_service: true
    cwd: .
    command: python3 teardown.py

👤 Hadi Alqattan

📝 License

Copyright © 2020 Hadi Alqattan.
This project is MIT licensed.


Give a ⭐️ if this project helped you!

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL