Mercurial > hg
annotate contrib/dockerlib.sh @ 31378:2e48c776a874
lock: do not encode result of gethostname on Python 2
If a hostname contained non-ascii character, str.encode() would first try
to decode it to a unicode and raise UnicodeDecodeError.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sun, 12 Mar 2017 16:26:34 -0700 |
parents | cea1473ba468 |
children | a3ac1ea611ce |
rev | line source |
---|---|
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; } |
27103
2d437a0f3355
docker: match more version of 'hg docker version' (issue4967)
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26888
diff
changeset
|
17 $DOCKER version | grep -Eq "^Client( version)?:" || { echo "Error: unexpected output from \"$DOCKER version\""; exit 1; } |
2d437a0f3355
docker: match more version of 'hg docker version' (issue4967)
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26888
diff
changeset
|
18 $DOCKER version | grep -Eq "^Server( version)?:" || { echo "Error: could not get docker server version - check it is running and your permissions"; exit 1; } |
24968
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 |
27245
cea1473ba468
dockerlib: short form for non-unique uid/gid for CentOS 5 compat (issue4977)
Mathias De Maré <mathias.demare@gmail.com>
parents:
27103
diff
changeset
|
38 echo RUN groupadd $DBUILDUSER -g `id -g` -o |
cea1473ba468
dockerlib: short form for non-unique uid/gid for CentOS 5 compat (issue4977)
Mathias De Maré <mathias.demare@gmail.com>
parents:
27103
diff
changeset
|
39 echo RUN useradd $DBUILDUSER -u `id -u` -g $DBUILDUSER -o |
24970
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 } |