STF 官方推荐使用 docker 来安装整个环境,好处大家都基本熟知,保证环境一致、快速建立节点、避免重复搭建等等。
现在 docker 安装起来也很方便,直接使用官方提供的脚本,如下:
curl -fsSL raw.githubusercontent.com/docker/docker-install/master/install.sh -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun
默认情况下,docker 命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root 用户。因此,更好地做法是将需要使用 docker 的用户加入 docker 用户组。
sudo usermod -aG docker $USER
x86 镜像如下:
docker pull openstf/stf:latest
docker pull sorccu/adb:latest
docker pull rethinkdb:latest
docker pull nginx:latest
armv7(树莓派) 镜像如下:
docker pull openstf/stf-armv7l:latest
docker pull yaming116/arm32v7-adb:latest
这里使用官方推荐的systemd
来管理的,在使用脚本安装 docker 的时候,会同时安装这个工具,相关信息可以看鸟哥的 Linux 私房菜 认识系统服务(daemons)
在系统/lib/systemd/system/
目录下新建文件夹 docker.service.wants
意思是启动 docker 的时候还需要启动这里的服。
/etc/environment
COREOS_PRIVATE_IPV4=192.168.22.205
/etc/environment
COREOS_PRIVATE_IPV4=192.168.22.205
[Unit]
Description=ADB daemon
After=docker.service
Requires=docker.service
[Service]
TimeoutStartSec=0
Restart=always
ExecStartPre=/usr/bin/docker pull sorccu/adb:latest
ExecStartPre=-/usr/bin/docker kill %p
ExecStartPre=-/usr/bin/docker rm %p
ExecStart=/usr/bin/docker run --rm \
--name %p \
--privileged \
-v /dev/bus/usb:/dev/bus/usb \
--net host \
sorccu/adb:latest
ExecStop=/usr/bin/docker exec %p adb kill-server
[Unit]
Description=RethinkDB
After=docker.service
Requires=docker.service
[Service]
EnvironmentFile=/etc/environment
TimeoutStartSec=0
Restart=always
ExecStartPre=/usr/bin/docker pull rethinkdb:2.3
ExecStartPre=-/usr/bin/docker kill %p
ExecStartPre=-/usr/bin/docker rm %p
ExecStartPre=/bin/mkdir -p /srv/rethinkdb
ExecStart=/usr/bin/docker run --rm \
--name %p \
-v /srv/rethinkdb:/data \
-e "AUTHKEY=monkey" \
--net host \
rethinkdb:2.3 \
rethinkdb --bind all \
--cache-size 8192 \
--no-update-check
ExecStop=-/usr/bin/docker stop -t 10 %p
[Unit]
Description=STF api
After=rethinkdb.service
BindsTo=rethinkdb.service
[Service]
EnvironmentFile=/etc/environment
TimeoutStartSec=0
Restart=always
ExecStartPre=/usr/bin/docker pull openstf/stf:latest
ExecStartPre=-/usr/bin/docker kill %p
ExecStartPre=-/usr/bin/docker rm %p
ExecStart=/usr/bin/docker run --rm \
--name %p \
-e "SECRET=monkey" \
--net host \
openstf/stf:latest \
stf api --port 3700 \
--connect-sub tcp://${COREOS_PRIVATE_IPV4}:7150 \
--connect-push tcp://${COREOS_PRIVATE_IPV4}:7170
ExecStop=-/usr/bin/docker stop -t 10 %p