-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathrun_docker.sh
138 lines (120 loc) · 3.97 KB
/
run_docker.sh
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#!/bin/bash
# bash wrappers for docker run commands
# should work on linux, perhaps on OSX
#
# Environment vars
#
# for OSRM, what version, what data to run
# OSRM_IMAGE_VERSION=${OSRM_IMAGE_VERSION:-2018-07-09T16-00-17} #greater chicago version, w/ Indiana
# OSRM_IMAGE_VERSION=$(docker image ls | grep osrm-preloaded-backend | awk '{print $2}')
# OSRM_IMAGE_VERSION=${OSRM_IMAGE_VERSION:-2018-06-05T14-01-17} #greater portland version
OSRM_IMAGE_VERSION=${OSRM_IMAGE_VERSION:-2018-07-09T16-00-17} #greater chicago
OSRM_DATA=${OSRM_DATA:-/data/north-america/us/greater-chicago.osrm}
# OSRM_DATA=${OSRM_DATA:-/data/north-america/us/greater-portland.osrm}
# # useful for connecting GUI to container
# SOCK=/tmp/.X11-unix
# XAUTH=/tmp/.docker.xauth
# xauth nlist $DISPLAY | sed -e 's/^..../ffff/' | xauth -f $XAUTH nmerge -
# chmod 755 $XAUTH
#
# Helper Functions
#
dcleanup(){
local containers
mapfile -t containers < <(docker ps -aq 2>/dev/null)
docker rm "${containers[@]}" 2>/dev/null
local volumes
mapfile -t volumes < <(docker ps --filter status=exited -q 2>/dev/null)
docker rm -v "${volumes[@]}" 2>/dev/null
local images
mapfile -t images < <(docker images --filter dangling=true -q 2>/dev/null)
docker rmi "${images[@]}" 2>/dev/null
}
del_stopped(){
local name=$1
local state
state=$(docker inspect --format "{{.State.Running}}" "$name" 2>/dev/null)
if [[ "$state" == "false" ]]; then
docker rm "$name"
fi
}
relies_on(){
for container in "$@"; do
local state
state=$(docker inspect --format "{{.State.Running}}" "$container" 2>/dev/null)
if [[ "$state" == "false" ]] || [[ "$state" == "" ]]; then
echo "$container is not running, starting it for you."
$container
fi
done
}
relies_on_network(){
for network in "$@"; do
local state
state=$(docker network inspect --format "{{.Created}}" "$network" 2>/dev/null)
if [[ "$state" == "false" ]] || [[ "$state" == "" ]]; then
echo "$network is not up, starting it for you."
$network
fi
done
}
routing_nw(){
# create the network for communicating
docker network create --driver bridge routing_nw
}
osrm_routed(){
relies_on_network routing_nw
docker run -d --rm \
-v /etc/localtime:/etc/localtime:ro \
--network=routing_nw \
--name osrm_routed \
jmarca/osrm-preloaded-backend:${OSRM_IMAGE_VERSION} \
osrm-routed --algorithm mld ${OSRM_DATA}
}
osrm_frontend(){
relies_on_network routing_nw
# to get this to work in the browser, you have to have the correct
# network below. So if docker isn't assigning the ip address
# 172.18.0.2 to the osrm backend, change the ip below. I need to
# write a little command line script to grab it from the docker
# network command, but I haven't done that yet.
#
# originally I put -e OSRM_BACKEND='http://osrm_routed:5000' here,
# but that doesn't work on the browser, which is where this is
# actually triggered.
docker run -d --rm \
-v /etc/localtime:/etc/localtime:ro \
-e OSRM_BACKEND='http://172.19.0.2:5000' \
--network=routing_nw \
--name osrm_frontend \
-p 9966:9966 \
osrm/osrm-frontend
}
python_environment(){
# relies_on osrm_routed osrm_frontend
relies_on_network routing_nw
docker run -it \
--rm \
--user 1000 \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e "DISPLAY=unix${DISPLAY}" \
--network=routing_nw \
--name ortools_python \
-v ${PWD}:/work \
jmarca/ortools_python bash
}
ortools_cpp(){
# relies_on osrm_routed osrm_frontend
docker run -it \
--rm \
--user 1000 \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e "DISPLAY=unix${DISPLAY}" \
--name ortools_cpp \
-v ${PWD}:/work \
jmarca/ortools:cpp bash
}
# osrm_routed
# route_optimization_service