mirror of
https://github.com/yldio/copilot.git
synced 2024-11-28 06:00:06 +02:00
Adding ContainerPilot skeleton.
This commit is contained in:
parent
50a265da8c
commit
fe5b7ffc5c
50
.gitignore
vendored
Normal file
50
.gitignore
vendored
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
# Logs
|
||||||
|
logs
|
||||||
|
*.log
|
||||||
|
npm-debug.log*
|
||||||
|
|
||||||
|
# Runtime data
|
||||||
|
pids
|
||||||
|
*.pid
|
||||||
|
*.seed
|
||||||
|
*.pid.lock
|
||||||
|
|
||||||
|
# Directory for instrumented libs generated by jscoverage/JSCover
|
||||||
|
lib-cov
|
||||||
|
|
||||||
|
# Coverage directory used by tools like istanbul
|
||||||
|
coverage
|
||||||
|
|
||||||
|
# nyc test coverage
|
||||||
|
.nyc_output
|
||||||
|
|
||||||
|
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
|
||||||
|
.grunt
|
||||||
|
|
||||||
|
# node-waf configuration
|
||||||
|
.lock-wscript
|
||||||
|
|
||||||
|
# Compiled binary addons (http://nodejs.org/api/addons.html)
|
||||||
|
build/Release
|
||||||
|
|
||||||
|
# Dependency directories
|
||||||
|
node_modules
|
||||||
|
jspm_packages
|
||||||
|
|
||||||
|
# Optional npm cache directory
|
||||||
|
.npm
|
||||||
|
|
||||||
|
# Optional eslint cache
|
||||||
|
.eslintcache
|
||||||
|
|
||||||
|
# Optional REPL history
|
||||||
|
.node_repl_history
|
||||||
|
|
||||||
|
# Output of 'npm pack'
|
||||||
|
*.tgz
|
||||||
|
|
||||||
|
# Vim files:
|
||||||
|
*.sw*
|
||||||
|
|
||||||
|
# Mac OS dirty files
|
||||||
|
.DS_Store
|
6
Makefile
Normal file
6
Makefile
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
SHELL := /bin/bash
|
||||||
|
.SHELLFLAGS := -eu -o pipefail
|
||||||
|
.PHONY: check
|
||||||
|
|
||||||
|
check:
|
||||||
|
@./bin/setup.sh
|
85
bin/setup.sh
Executable file
85
bin/setup.sh
Executable file
@ -0,0 +1,85 @@
|
|||||||
|
#! /usr/bin/env bash
|
||||||
|
|
||||||
|
# setup.sh - Checks that all the required tools are present and that they are
|
||||||
|
# appropriately configured for deploying to Triton.
|
||||||
|
#
|
||||||
|
# Adapted from https://github.com/autopilotpattern/mysql/blob/master/setup.sh
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Prelude
|
||||||
|
#
|
||||||
|
set -euo pipefail
|
||||||
|
IFS=$'\n\t'
|
||||||
|
|
||||||
|
#
|
||||||
|
# Utilities
|
||||||
|
#
|
||||||
|
die() {
|
||||||
|
local msg="$@"
|
||||||
|
[[ -z "${msg}" ]] || {
|
||||||
|
echo
|
||||||
|
tput setaf 1 # red
|
||||||
|
tput bold
|
||||||
|
echo "${msg}"
|
||||||
|
tput sgr0 # reset
|
||||||
|
}
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Check functions
|
||||||
|
#
|
||||||
|
ensure_command() {
|
||||||
|
local cmd="$1"
|
||||||
|
|
||||||
|
command -v "${cmd}" > /dev/null 2>&1 || {
|
||||||
|
die "Couldn't find required command: ${cmd}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ensure_docker_config_matches_triton_config_and_capture_triton_details() {
|
||||||
|
local docker_user=$(docker info 2>&1 | awk -F": " '/SDCAccount:/{print $2}')
|
||||||
|
local docker_dc=$(echo $DOCKER_HOST | awk -F"/" '{print $3}' | awk -F'.' '{print $1}')
|
||||||
|
TRITON_USER=$(triton profile get | awk -F": " '/account:/{print $2}')
|
||||||
|
TRITON_DC=$(triton profile get | awk -F"/" '/url:/{print $3}' | awk -F'.' '{print $1}')
|
||||||
|
TRITON_ACCOUNT=$(triton account get | awk -F": " '/id:/{print $2}')
|
||||||
|
if [[ ! "$docker_user" = "$TRITON_USER" ]] || [[ ! "$docker_dc" = "$TRITON_DC" ]]; then
|
||||||
|
echo "Docker user: ${docker_user}"
|
||||||
|
echo "Triton user: ${TRITON_USER}"
|
||||||
|
echo "Docker data center: ${docker_dc}"
|
||||||
|
echo "Triton data center: ${TRITON_DC}"
|
||||||
|
die "Your Triton configuration does not match your Docker configuration."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
ensure_triton_cns_is_enabled() {
|
||||||
|
local triton_cns_enabled=$(triton account get | awk -F": " '/cns/{print $2}')
|
||||||
|
[[ "$triton_cns_enabled" == "true" ]] || {
|
||||||
|
die "Triton CNS is required and not enabled."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
write_env_file() {
|
||||||
|
[[ -f .env ]] || {
|
||||||
|
echo '# Consul discovery via Triton CNS' >> .env
|
||||||
|
echo CONSUL=consul.svc.${TRITON_ACCOUNT}.${TRITON_DC}.cns.joyent.com >> .env
|
||||||
|
echo MONGO_URL=mongodb://mongo.svc.${TRITON_ACCOUNT}.${TRITON_DC}.cns.joyent.com:27017/rocketchat >> .env
|
||||||
|
echo ROOT_URL=http://rocketchat.svc.${TRITON_ACCOUNT}.${TRITON_DC}.cns.joyent.com:3000/ >> .env
|
||||||
|
echo >> .env
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ensure_prerequisites() {
|
||||||
|
ensure_command docker
|
||||||
|
ensure_command docker-compose
|
||||||
|
ensure_command triton
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Main
|
||||||
|
#
|
||||||
|
ensure_prerequisites
|
||||||
|
ensure_docker_config_matches_triton_config_and_capture_triton_details
|
||||||
|
ensure_triton_cns_is_enabled
|
||||||
|
write_env_file
|
20
docker-compose.yml
Normal file
20
docker-compose.yml
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#############################################################################
|
||||||
|
# CONSUL
|
||||||
|
#############################################################################
|
||||||
|
consul:
|
||||||
|
image: progrium/consul:latest
|
||||||
|
labels:
|
||||||
|
- triton.cns.services=consul
|
||||||
|
restart: always
|
||||||
|
mem_limit: 128m
|
||||||
|
expose:
|
||||||
|
- 53
|
||||||
|
- 8300
|
||||||
|
- 8301
|
||||||
|
- 8302
|
||||||
|
- 8400
|
||||||
|
- 8500
|
||||||
|
env_file: .env
|
||||||
|
ports:
|
||||||
|
- 8500:8500
|
||||||
|
command: -server -bootstrap -ui-dir /ui
|
6
local-compose.yml
Normal file
6
local-compose.yml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
consul:
|
||||||
|
extends:
|
||||||
|
file: docker-compose.yml
|
||||||
|
service: consul
|
||||||
|
ports:
|
||||||
|
- 8500:8500
|
Loading…
Reference in New Issue
Block a user