16
16
17
17
DIR=" $( cd " $( dirname " ${BASH_SOURCE[0]} " ) " > /dev/null && pwd ) "
18
18
19
+ if [ -n " $CONTAINER_RUNTIME " ]; then
20
+ RUNTIME=" $CONTAINER_RUNTIME "
21
+ elif command -v podman & > /dev/null; then
22
+ RUNTIME=podman
23
+ else
24
+ RUNTIME=docker
25
+ fi
26
+
19
27
if [ " $1 " = " release" ] ; then
20
28
MOUNT_DIR=/bb02
21
29
CONTAINER_NAME_SUFFIX=rel
@@ -37,37 +45,46 @@ dockerdev () {
37
45
exit 1
38
46
fi
39
47
48
+ USERFLAG=" "
49
+ if [ " $RUNTIME " = " docker" ] ; then
50
+ # Only needed for docker - see the comment below.
51
+ USERFLAG=" --user=dockeruser"
52
+ fi
53
+
40
54
# If already running, enter the container.
41
- if docker ps --filter " name=^${CONTAINER_NAME} $" | grep -q " $CONTAINER_NAME " ; then
42
- docker exec --user=dockeruser --workdir=" $MOUNT_DIR " -it " $CONTAINER_NAME " bash
55
+ if $RUNTIME ps --filter " name=^${CONTAINER_NAME} $" | grep -q " $CONTAINER_NAME " ; then
56
+ $RUNTIME exec $USERFLAG --workdir=" $MOUNT_DIR " -it " $CONTAINER_NAME " bash
43
57
return
44
58
fi
45
59
46
- if docker ps --all --filter " name=^${CONTAINER_NAME} $" | grep -q " $CONTAINER_NAME " ; then
47
- docker rm " $CONTAINER_NAME "
60
+ if $RUNTIME ps --all --filter " name=^${CONTAINER_NAME} $" | grep -q " $CONTAINER_NAME " ; then
61
+ $RUNTIME rm " $CONTAINER_NAME "
48
62
fi
49
63
50
64
# SYS_PTRACE is needed to run address sanitizer
51
- docker run \
65
+ $RUNTIME run \
52
66
--detach \
53
67
--interactive --tty \
54
68
--name=" $CONTAINER_NAME " \
55
69
-v " $repo_path " :" $MOUNT_DIR " \
56
70
--cap-add SYS_PTRACE \
57
71
${CONTAINER_IMAGE} bash
58
72
59
- # Use same user/group id as on the host, so that files are not created as root in the mounted
60
- # volume.
61
- docker exec -it " $CONTAINER_NAME " groupadd -o -g " $( id -g) " dockergroup
62
- docker exec -it " $CONTAINER_NAME " useradd -u " $( id -u) " -m -g dockergroup dockeruser
73
+ if [ " $RUNTIME " = " docker" ] ; then
74
+ # Use same user/group id as on the host, so that files are not created as root in the
75
+ # mounted volume. Only needed for Docker. On rootless podman, the host user maps to the
76
+ # container root user.
77
+ $RUNTIME exec -it " $CONTAINER_NAME " groupadd -o -g " $( id -g) " dockergroup
78
+ $RUNTIME exec -it " $CONTAINER_NAME " useradd -u " $( id -u) " -m -g dockergroup dockeruser
79
+ fi
63
80
64
81
# Call a second time to enter the container.
65
82
dockerdev
66
83
}
67
84
68
85
if test " $1 " == " stop" ; then
69
- if docker ps -a | grep -q " $CONTAINER_NAME " ; then
70
- docker stop " $CONTAINER_NAME "
86
+ if $RUNTIME ps -a | grep -q " $CONTAINER_NAME " ; then
87
+ $RUNTIME stop " $CONTAINER_NAME "
71
88
fi
72
89
else
73
90
dockerdev
0 commit comments