author | Matt Mackall <mpm@selenic.com> |
Tue, 20 Oct 2015 15:59:10 -0500 | |
branch | stable |
changeset 26813 | b66e3ca0b90c |
parent 24970 | 33055069e465 |
child 26888 | 271a802071b7 |
permissions | -rw-r--r-- |
24968
80c9e99d68e0
dockerlib: start extracting common functions for setting up docker
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
1 |
#!/bin/sh -eu |
80c9e99d68e0
dockerlib: start extracting common functions for setting up docker
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
2 |
|
80c9e99d68e0
dockerlib: start extracting common functions for setting up docker
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
3 |
# This function exists to set up the DOCKER variable and verify that |
80c9e99d68e0
dockerlib: start extracting common functions for setting up docker
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
4 |
# it's the binary we expect. It also verifies that the docker service |
80c9e99d68e0
dockerlib: start extracting common functions for setting up docker
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
5 |
# is running on the system and we can talk to it. |
80c9e99d68e0
dockerlib: start extracting common functions for setting up docker
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
6 |
function checkdocker() { |
80c9e99d68e0
dockerlib: start extracting common functions for setting up docker
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
7 |
if which docker.io >> /dev/null 2>&1 ; then |
80c9e99d68e0
dockerlib: start extracting common functions for setting up docker
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
8 |
DOCKER=docker.io |
80c9e99d68e0
dockerlib: start extracting common functions for setting up docker
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
9 |
elif which docker >> /dev/null 2>&1 ; then |
80c9e99d68e0
dockerlib: start extracting common functions for setting up docker
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
10 |
DOCKER=docker |
80c9e99d68e0
dockerlib: start extracting common functions for setting up docker
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
11 |
else |
80c9e99d68e0
dockerlib: start extracting common functions for setting up docker
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
12 |
echo "Error: docker must be installed" |
80c9e99d68e0
dockerlib: start extracting common functions for setting up docker
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
13 |
exit 1 |
80c9e99d68e0
dockerlib: start extracting common functions for setting up docker
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
14 |
fi |
80c9e99d68e0
dockerlib: start extracting common functions for setting up docker
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
15 |
|
80c9e99d68e0
dockerlib: start extracting common functions for setting up docker
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
16 |
$DOCKER -h 2> /dev/null | grep -q Jansens && { echo "Error: $DOCKER is the Docking System Tray - install docker.io instead"; exit 1; } |
80c9e99d68e0
dockerlib: start extracting common functions for setting up docker
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
17 |
$DOCKER version | grep -q "^Client version:" || { echo "Error: unexpected output from \"$DOCKER version\""; exit 1; } |
80c9e99d68e0
dockerlib: start extracting common functions for setting up docker
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
18 |
$DOCKER version | grep -q "^Server version:" || { echo "Error: could not get docker server version - check it is running and your permissions"; exit 1; } |
80c9e99d68e0
dockerlib: start extracting common functions for setting up docker
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
19 |
} |
24969
227b9b2a57a3
dockerlib: extract initcontainer() method
Augie Fackler <augie@google.com>
parents:
24968
diff
changeset
|
20 |
|
227b9b2a57a3
dockerlib: extract initcontainer() method
Augie Fackler <augie@google.com>
parents:
24968
diff
changeset
|
21 |
# Construct a container and leave its name in $CONTAINER for future use. |
227b9b2a57a3
dockerlib: extract initcontainer() method
Augie Fackler <augie@google.com>
parents:
24968
diff
changeset
|
22 |
function initcontainer() { |
227b9b2a57a3
dockerlib: extract initcontainer() method
Augie Fackler <augie@google.com>
parents:
24968
diff
changeset
|
23 |
[ "$1" ] || { echo "Error: platform name must be specified"; exit 1; } |
227b9b2a57a3
dockerlib: extract initcontainer() method
Augie Fackler <augie@google.com>
parents:
24968
diff
changeset
|
24 |
|
227b9b2a57a3
dockerlib: extract initcontainer() method
Augie Fackler <augie@google.com>
parents:
24968
diff
changeset
|
25 |
DFILE="$ROOTDIR/contrib/docker/$1" |
227b9b2a57a3
dockerlib: extract initcontainer() method
Augie Fackler <augie@google.com>
parents:
24968
diff
changeset
|
26 |
[ -f "$DFILE" ] || { echo "Error: docker file $DFILE not found"; exit 1; } |
227b9b2a57a3
dockerlib: extract initcontainer() method
Augie Fackler <augie@google.com>
parents:
24968
diff
changeset
|
27 |
|
227b9b2a57a3
dockerlib: extract initcontainer() method
Augie Fackler <augie@google.com>
parents:
24968
diff
changeset
|
28 |
CONTAINER="hg-dockerrpm-$1" |
227b9b2a57a3
dockerlib: extract initcontainer() method
Augie Fackler <augie@google.com>
parents:
24968
diff
changeset
|
29 |
DBUILDUSER=build |
227b9b2a57a3
dockerlib: extract initcontainer() method
Augie Fackler <augie@google.com>
parents:
24968
diff
changeset
|
30 |
( |
227b9b2a57a3
dockerlib: extract initcontainer() method
Augie Fackler <augie@google.com>
parents:
24968
diff
changeset
|
31 |
cat $DFILE |
24970
33055069e465
dockerlib: fix initcontainer for boot2docker users
Augie Fackler <augie@google.com>
parents:
24969
diff
changeset
|
32 |
if [ $(uname) = "Darwin" ] ; then |
33055069e465
dockerlib: fix initcontainer for boot2docker users
Augie Fackler <augie@google.com>
parents:
24969
diff
changeset
|
33 |
# The builder is using boot2docker on OS X, so we're going to |
33055069e465
dockerlib: fix initcontainer for boot2docker users
Augie Fackler <augie@google.com>
parents:
24969
diff
changeset
|
34 |
# *guess* the uid of the user inside the VM that is actually |
33055069e465
dockerlib: fix initcontainer for boot2docker users
Augie Fackler <augie@google.com>
parents:
24969
diff
changeset
|
35 |
# running docker. This is *very likely* to fail at some point. |
33055069e465
dockerlib: fix initcontainer for boot2docker users
Augie Fackler <augie@google.com>
parents:
24969
diff
changeset
|
36 |
echo RUN useradd $DBUILDUSER -u 1000 |
33055069e465
dockerlib: fix initcontainer for boot2docker users
Augie Fackler <augie@google.com>
parents:
24969
diff
changeset
|
37 |
else |
33055069e465
dockerlib: fix initcontainer for boot2docker users
Augie Fackler <augie@google.com>
parents:
24969
diff
changeset
|
38 |
echo RUN groupadd $DBUILDUSER -g `id -g` |
33055069e465
dockerlib: fix initcontainer for boot2docker users
Augie Fackler <augie@google.com>
parents:
24969
diff
changeset
|
39 |
echo RUN useradd $DBUILDUSER -u `id -u` -g $DBUILDUSER |
33055069e465
dockerlib: fix initcontainer for boot2docker users
Augie Fackler <augie@google.com>
parents:
24969
diff
changeset
|
40 |
fi |
24969
227b9b2a57a3
dockerlib: extract initcontainer() method
Augie Fackler <augie@google.com>
parents:
24968
diff
changeset
|
41 |
) | $DOCKER build --tag $CONTAINER - |
227b9b2a57a3
dockerlib: extract initcontainer() method
Augie Fackler <augie@google.com>
parents:
24968
diff
changeset
|
42 |
} |