-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathkitchen
executable file
·68 lines (62 loc) · 1.85 KB
/
kitchen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#!/usr/bin/env sh
CONTEXT=$PWD
PROJECT=$(basename "$PWD")
HELPMSG=$(cat <<-END
Build a Docker image and run disposable containers.
COMMANDS
bake [TAG] Build $PROJECT:TAG image
clean Delete all $PROJECT containers and Docker leftovers
debug TAG SCRIPT [ARGS] Debug Python SCRIPT in a $PROJECT:TAG container
eightysix [TAG] Delete $PROJECT:TAG containers, image, and leftovers
freeze [TAG] Update requirements.txt and rebuild $PROJECT:TAG
menu Show all available Docker objects
runit [TAG] [CMD] Run CMD in an interactive $PROJECT:TAG container
serve [TAG] [CMD] runit [TAG] [CMD] with $CONTEXT mounted as /context
DEFAULTS
TAG 'latest'
CMD See $CONTEXT/Dockerfile
EXAMPLES
./kitchen bake monty
./kitchen freeze monty
./kitchen serve monty
./kitchen serve monty python -m test
END
)
bake() {
touch requirements.txt &&
docker build --tag "$PROJECT:${1:-latest}" "$CONTEXT" &&
docker image prune --force
}
clean() {
docker ps --quiet --filter ancestor="$PROJECT" | xargs docker rm --force &&
docker system prune --force
}
debug() {
serve "$1" python -m pdb "${@:2}"
}
eightysix() {
clean &&
docker rmi --force "$PROJECT:${1:-latest}" &&
docker image prune --force
}
freeze() {
docker run --rm "$PROJECT:${1:-latest}" pip freeze > requirements.txt &&
bake "$1"
}
menu() {
echo "---- Images ----" && docker image ls | sort
echo "---- Volumes ----" && docker volume ls | sort
echo "---- Networks ----" && docker network ls
echo "---- Containers ----" && docker ps --all
}
runit() {
docker run --rm --interactive --tty "$PROJECT:${1:-latest}" "${@:2}"
}
serve() {
docker run --rm --interactive --tty \
--hostname "${PROJECT}" \
--volume "${CONTEXT}:/context:delegated" \
"$PROJECT:${1:-latest}" \
"${@:2}"
}
if [ $# -eq 0 ]; then echo "$HELPMSG"; else "$@"; fi