Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/seibii/container_ship
:whale: Yet another ECS deployment tool
https://github.com/seibii/container_ship
container-ship deployment deployment-tools docker ecs ecs-deployment
Last synced: about 1 month ago
JSON representation
:whale: Yet another ECS deployment tool
- Host: GitHub
- URL: https://github.com/seibii/container_ship
- Owner: seibii
- License: mit
- Created: 2019-10-22T14:22:38.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2024-03-04T09:14:19.000Z (10 months ago)
- Last Synced: 2024-08-10T09:16:36.370Z (4 months ago)
- Topics: container-ship, deployment, deployment-tools, docker, ecs, ecs-deployment
- Language: Ruby
- Homepage:
- Size: 1020 KB
- Stars: 8
- Watchers: 6
- Forks: 1
- Open Issues: 17
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# container_ship
[![Gem Version](https://badge.fury.io/rb/container_ship.svg)](https://badge.fury.io/rb/container_ship)
[![Circle CI](https://circleci.com/gh/seibii/container_ship.svg?style=shield)](https://circleci.com/gh/seibii/container_ship)
[![Code Climate](https://codeclimate.com/github/seibii/container_ship/badges/gpa.svg)](https://codeclimate.com/github/seibii/container_ship)
[![Libraries.io dependency status for GitHub repo](https://img.shields.io/librariesio/github/seibii/container_ship.svg)](https://libraries.io/github/seibii/container_ship)
![](http://ruby-gem-downloads-badge.herokuapp.com/container_ship?type=total)
![GitHub](https://img.shields.io/github/license/seibii/container_ship.svg)`container_ship` is yet another ECS deployment tool.
## Key features
- Using raw `task_definition.json` file instead of a template file with complex state or variables
- Convention over configuration## Installation
```ruby
gem 'container_ship'
```## Usage
### Prepare Dockerfile
You need to put `Dockerfile` in your app root directory.
And all the services/tasks will use the image built with that.### Prepare task_definition.json and Dockerfile
```sh
container_ship init YOUR_CLUSTER_NAME
```will create empty directory for you. And you must put `task_definition.json` file in directories like below.
```
your_app
|-- .container_ship
| |-- your_cluster_name
| | |-- services // ECS services
| | | |-- your_service_name // like server or api
| | | | |-- your_envrionment_name // like production or staging
| | | | | |-- task_definition.json
| | | | |
| | | | +-- your_other_environment_name
| | | | |-- task_definition.json
| | | |
| | | +-- your_other_service_name
| | |
| | |
| | +-- tasks // ECS tasks
| | |-- your_task_name ( like db-migrate or
| | | |-- your_envrionment_name // like production or staging
| | | | |-- task_definition.json
| | | |
| | | +-- your_other_environment_name
| | | |-- task_definition.json
| | +-- your_task_name ( like db-migrate or
| |
| +-- your_other_cluster_name
|--...
```### Prepare ECS resources
You must obey `convention over configuration` concept. So, naming convention is presented below.- ECS cluster: `"#{cluster_name}-#{environment}"`
- ECS service: `"#{cluster_name}-#{service_name}-#{environment}"`
- ECS task: `"#{cluster_name}-#{task_name}-#{environment}"`And export your ECR repository root uri.
```sh
export ECR_REPOSITORY=xxxxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/
```### Deploy a service
```sh
container_ship ship CLUSTER_NAME SERVICE_NAME ENVIRONMENT BUILD_NUMBER
```will deploy a service in `.container_ship/CLUSTER_NAME/services/SERVICE_NAME/ENVIRONMENT/task_definition.json`
### Run a task
```sh
container_ship exec CLUSTER_NAME TASK_NAME ENVIRONMENT BUILD_NUMBER
```
will run a task in `.container_ship/CLUSTER_NAME/tasks/TASK_NAME/ENVIRONMENT/task_definition.json`## Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/seibii/container_ship. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
## License
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
## Code of Conduct
Everyone interacting in the ContainerShip project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/seibii/container_ship/blob/master/CODE_OF_CONDUCT.md).