Skip to content
This repository was archived by the owner on Jun 30, 2021. It is now read-only.

Commit b3888c1

Browse files
committed
Upgrade Firefox 46 & Ubuntu 20160422. Fixes #83
1 parent a141112 commit b3888c1

File tree

13 files changed

+89
-60
lines changed

13 files changed

+89
-60
lines changed

.travis.yml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,7 @@ install:
2020
- ./test/install
2121

2222
script:
23-
- travis_retry ./test/script_scenario_1
24-
- ./test/script_scenario_2
25-
- ./test/script_archive
26-
- ./test/script_push
23+
- ./test/script
2724

2825
# cleanup though doesn't seem to be necessary in Travis infra
2926
after_script:

CHANGELOG.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,10 @@ Note image ids also change after scm-source.json has being updated which trigger
99

1010
## TBD_DOCKER_TAG
1111
+ Date: TBD_DATE
12-
+ TBD_COMMIT_MSG
12+
+ Upgrade Firefox major to 46.0
13+
+ Upgrade Ubuntu xenial date to 20160422
14+
+ Fix bug #83 on `docker restart`
15+
+ Bump supervisor commit
1316
+ Image tag details:
1417
+ Selenium: vTBD_SELENIUM_VERSION (TBD_SELENIUM_REVISION)
1518
+ Chrome stable: TBD_CHROME_STABLE
@@ -21,7 +24,7 @@ Note image ids also change after scm-source.json has being updated which trigger
2124
+ Python: TBD_PYTHON_VERSION
2225
+ Sauce Connect TBD_SAUCE_CONNECT_VERS, build TBD_SAUCE_CONNECT_BUILD TBD_SAUCE_CONNECT_REVISION
2326
+ BrowserStack Local version TBD_BROWSER_STACK_VERSION
24-
+ Tested on kernel dev host: 4.4.0-21-generic x86_64
27+
+ Tested on kernel dev host: 4.4.0-22-generic x86_64
2528
+ Tested on kernel CI host: TBD_HOST_UNAME
2629
+ Built at dev host with: Docker version 1.11.0, build 4dc5990
2730
+ Built at CI host with: Docker version TBD_DOCKER_VERS, build TBD_DOCKER_BUILD

CONTRIBUTING.md

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,28 @@
33
## Local
44
For pull requests:
55

6-
./test/before_install_build && ./test/install && ./test/script_scenario_1
7-
./test/script_scenario_2 && ./test/script_archive && ./test/script_push
8-
./test/after_script
6+
./test/before_install_build && ./test/install
7+
#or: ./test/script
8+
./test/script_scenario_1 && ./test/script_scenario_2
9+
./test/script_archive && ./test/script_push
10+
./test/after_script #or: docker exec grid versions
911
open ./images/grid_console.png #to verify the versions are correct
1012
git checkout ./images/grid_console.png && open ./videos/chrome/test.mkv
1113
travis lint #if you changed .travis.yml
12-
git checkout -b tmp-2.53.0i #name your branch according to your changes
14+
git checkout -b tmp-2.53.0j #name your branch according to your changes
1315
#git add ... git commit ... git push ... open pull request
1416

1517
For repository owners only:
1618

17-
git commit -m "Upgrade Chrome patch to 50.0.2661.86"
19+
git commit -m "Upgrade Firefox 46 & Ubuntu 20160422. Fixes #83"
1820
git tag -d latest #tag latest will be updated from TravisCI
19-
git tag 2.53.0i && git push origin tmp-2.53.0i && git push --tags
21+
git tag 2.53.0j && git push origin tmp-2.53.0j && git push --tags
2022

2123
-- Wait for Travis to pass OK
22-
-- Make shure changes got merged into master by elgalubot
24+
-- Make sure changes got merged into master by elgalubot
2325
-- Duplicate section in CHANGELOG.md starting with TBD_DOCKER_TAG
2426

25-
git checkout master && git pull && git branch -d tmp-2.53.0i && git push origin --delete tmp-2.53.0i
27+
git checkout master && git pull && git branch -d tmp-2.53.0j && git push origin --delete tmp-2.53.0j
2628

2729
-- Upgrade release tag in github.com with latest CHANGELOG.md
2830
-- If Chrome version changed upload:
@@ -38,9 +40,9 @@ Keep certain bins if chrome version changed for example:
3840
## Retry
3941
Failed in Travis? retry
4042

41-
git tag -d 2.53.0i && git push origin :2.53.0i
43+
git tag -d 2.53.0j && git push origin :2.53.0j
4244
#git add ...
43-
git commit --amend && git tag 2.53.0i && git push --force origin tmp-2.53.0i && git push --tags
45+
git commit --amend && git tag 2.53.0j && git push --force origin tmp-2.53.0j && git push --tags
4446

4547
## Docker push from Travis CI
4648
Travis [steps](https://docs.travis-ci.com/user/docker/#Pushing-a-Docker-Image-to-a-Registry) involve `docker login` and docker credentials encryptions.

Dockerfile

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
###################################################
44
#== Ubuntu xenial is 16.04, i.e. FROM ubuntu:16.04
55
# search for more at https://registry.hub.docker.com/_/ubuntu/tags/manage/
6-
FROM ubuntu:xenial-20160331.1
6+
FROM ubuntu:xenial-20160422
77
ENV UBUNTU_FLAVOR="xenial" \
8-
UBUNTU_DATE="20160331.1"
8+
UBUNTU_DATE="20160422"
99

1010
#== Ubuntu wily is 15.10, i.e. FROM ubuntu:15.10
1111
# FROM ubuntu:wily-20151208
@@ -498,12 +498,13 @@ ENV SEL_HOME ${NORMAL_USER_HOME}/selenium
498498
# RUN apt-get update -qqy \
499499
# && apt-get -qqy install \
500500
# supervisor \
501+
# 2016-04-11 commit: 3e541a34a4ab74, version: supervisor-4.0.0.dev0
501502
# 2016-03-06 commit: e4a37c6f8d1cb6, version: supervisor-4.0.0.dev0
502503
# 2016-02-01 commit: eb904ccdb3573e, version: supervisor-4.0.0.dev0
503504
# 2015-06-24 commit: b3ad59703b554f, version: supervisor-4.0.0.dev0
504505
# 2015-08-24 commit: 304b4f388d3e3f, supervisor/version.txt: 4.0.0.dev0
505506
# TODO: Upgrade to supervisor stable 4.0 as soon as is released
506-
RUN SHA="e4a37c6f8d1cb68f3813c7fdbcfee9a929788a75" \
507+
RUN SHA="3e541a34a4ab741e67ff4406eb2727599903c6e3" \
507508
&& pip install --upgrade \
508509
"https://github.com/Supervisor/supervisor/zipball/${SHA}" \
509510
&& rm -rf /var/lib/apt/lists/*
@@ -677,7 +678,7 @@ RUN cd /tmp \
677678
# FF_LANG can be either en-US // de // fr and so on
678679
# Regarding the pip packages, see released versions at:
679680
# https://github.com/mozilla/mozdownload/releases
680-
ENV FF_VER="45.0.2" \
681+
ENV FF_VER="46.0" \
681682
FF_LANG="en-US" \
682683
FF_PLATFORM="linux-x86_64" \
683684
FF_BASE_URL="https://archive.mozilla.org/pub" \

README.md

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -19,20 +19,24 @@
1919

2020
Note [SeleniumHQ/docker-selenium](https://github.com/SeleniumHQ/docker-selenium) project is more useful for building selenium grids while this one focuses on building disposable standalone seleniums with [video recording support](./docs/videos.md) and both browsers on the same container. It also adds some other features like [customizing the screen size](#screen-size) and [ssh access](#ssh) that can be particularly useful for tunneling support.
2121

22+
### Purpose
23+
24+
The purpose of this project is to have [Selenium][] running as simple and as fast as possible.
25+
2226
### Run
2327

2428
1. Pull the image and run the container
2529

26-
docker pull elgalu/selenium:2.53.0i
30+
docker pull elgalu/selenium:2.53.0j
2731

2832
docker run --rm -ti --name=grid -p 4444:24444 -p 5900:25900 \
29-
-v /dev/shm:/dev/shm -e VNC_PASSWORD=hola elgalu/selenium:2.53.0i
33+
-v /dev/shm:/dev/shm -e VNC_PASSWORD=hola elgalu/selenium:2.53.0j
3034

3135
2. Wait until the grid starts properly before starting the tests _(Optional but recommended)_
3236

3337
docker exec grid wait_all_done 30s
3438

35-
After this, Selenium should be up and running at `http://localhost:4444/wd/hub`. Open the url in your browser to confirm it is running.
39+
After this, [Selenium][] should be up and running at `http://localhost:4444/wd/hub`. Open the url in your browser to confirm it is running.
3640
If you are using Mac (OSX) or [Microsoft Windows](https://docs.docker.com/engine/installation/windows/) `localhost` won't work! Find out the correct IP through `boot2docker ip` or `docker-machine ip default`.
3741

3842
**Notes:**
@@ -61,7 +65,7 @@ You can also ssh into the machine as long as `SSH_AUTH_KEYS="$(cat ~/.ssh/id_rsa
6165
docker run --rm -ti --name=grid -p=4444:24444 -p=5900:25900 -p=22222:22222 \
6266
-e SSHD=true \
6367
-e SSH_AUTH_KEYS="$(cat ~/.ssh/id_rsa.pub)" \
64-
-v /dev/shm:/dev/shm elgalu/selenium:2.53.0i
68+
-v /dev/shm:/dev/shm elgalu/selenium:2.53.0j
6569

6670
Then
6771

@@ -72,7 +76,7 @@ Include `-X` in ssh command if you want to redirect the started GUI programs to
7276
docker run --rm -ti --name=grid -p=4444:24444 -p=5900:25900 -p=22222:22222 \
7377
-e SSHD=true -e SSHD_X11FORWARDING=yes \
7478
-e SSH_AUTH_KEYS="$(cat ~/.ssh/id_rsa.pub)" \
75-
-v /dev/shm:/dev/shm elgalu/selenium:2.53.0i
79+
-v /dev/shm:/dev/shm elgalu/selenium:2.53.0j
7680

7781
Then
7882

@@ -90,12 +94,12 @@ Supervisor exposes an http server but is not enough to bind the ports via `docke
9094
### Screen size
9195
You can set a custom screen size at docker run time by providing `SCREEN_WIDTH` and `SCREEN_HEIGHT` environment variables:
9296

93-
docker pull elgalu/selenium:2.53.0i
97+
docker pull elgalu/selenium:2.53.0j
9498

9599
docker run -d --name=grid -p 4444:24444 -p 5900:25900 \
96100
-v /dev/shm:/dev/shm -e VNC_PASSWORD=hola \
97101
-e SCREEN_WIDTH=1920 -e SCREEN_HEIGHT=1480 \
98-
elgalu/selenium:2.53.0i
102+
elgalu/selenium:2.53.0j
99103

100104
docker exec grid wait_all_done 10s
101105

@@ -153,7 +157,7 @@ You need to pass the environment variable `-e NOVNC=true` in order to start the
153157

154158
docker run --rm -ti --name=grid -p 4444:24444 -p 5900:25900 \
155159
-v /dev/shm:/dev/shm -p 6080:26080 -e NOVNC=true \
156-
elgalu/selenium:2.53.0i
160+
elgalu/selenium:2.53.0j
157161

158162
If the VNC password was randomly generated find out with
159163

@@ -226,9 +230,9 @@ There are also additional steps you can take to ensure you're using the correct
226230

227231
You can simply verify that image id is indeed the correct one.
228232

229-
# e.g. full image id for tag 2.53.0i
233+
# e.g. full image id for tag 2.53.0j
230234
export IMGID="<<Please see CHANGELOG.md>>"
231-
if docker inspect -f='{{.Id}}' elgalu/selenium:2.53.0i |grep ${IMGID} &> /dev/null; then
235+
if docker inspect -f='{{.Id}}' elgalu/selenium:2.53.0j |grep ${IMGID} &> /dev/null; then
232236
echo "Image ID tested ok"
233237
else
234238
echo "Image ID doesn't match"
@@ -238,7 +242,7 @@ You can simply verify that image id is indeed the correct one.
238242

239243
Given docker.io currently allows to push the same tag image twice this represent a security concern but since docker >= 1.6.2 is possible to fetch the digest sha256 instead of the tag so you can be sure you're using the exact same docker image every time:
240244

241-
# e.g. sha256 for tag 2.53.0i
245+
# e.g. sha256 for tag 2.53.0j
242246
export SHA=<<Please see CHANGELOG.md>>
243247
docker pull elgalu/selenium@sha256:${SHA}
244248

@@ -270,7 +274,7 @@ Host machine, terminal 2:
270274
-v /dev/shm:/dev/shm \
271275
-e SCREEN_WIDTH -e SCREEN_HEIGHT -e XE_DISP_NUM \
272276
-v /tmp/.X11-unix/X${XE_DISP_NUM}:/tmp/.X11-unix/X${XE_DISP_NUM} \
273-
elgalu/selenium:2.53.0i
277+
elgalu/selenium:2.53.0j
274278

275279
Now when you run your tests instead of connecting. If docker run fails try `xhost +`
276280

@@ -292,7 +296,7 @@ ANYPORT=0
292296
REMOTE_DOCKER_SRV=localhost
293297
CONTAINER=$(docker run -d -p=0.0.0.0:${ANYPORT}:22222 -p=0.0.0.0:${ANYPORT}:24444 \
294298
-p=0.0.0.0:${ANYPORT}:25900 -e SCREEN_HEIGHT=1110 -e VNC_PASSWORD=hola \
295-
-e SSH_AUTH_KEYS="$(cat ~/.ssh/id_rsa.pub)" elgalu/selenium:2.53.0i
299+
-e SSH_AUTH_KEYS="$(cat ~/.ssh/id_rsa.pub)" elgalu/selenium:2.53.0j
296300
297301
# -- Option 2.docker run- Running docker on remote docker server like in the cloud
298302
# Useful if the docker server is running in the cloud. Establish free local ports
@@ -302,7 +306,7 @@ ssh ${REMOTE_DOCKER_SRV} #get into the remote docker provider somehow
302306
# it acts as a jump host so my public key is already on that server
303307
CONTAINER=$(docker run -d -p=0.0.0.0:${ANYPORT}:22222 -e SCREEN_HEIGHT=1110 \
304308
-e VNC_PASSWORD=hola -e SSH_AUTH_KEYS="$(cat ~/.ssh/authorized_keys)" \
305-
elgalu/selenium:2.53.0i
309+
elgalu/selenium:2.53.0j
306310
307311
# -- Common: Wait for the container to start
308312
./host-scripts/wait-docker-selenium.sh grid 7s
@@ -373,7 +377,7 @@ If you git clone this repo locally, i.e. cd into where the Dockerfile is, you ca
373377
374378
If you prefer to download the final built image from docker you can pull it, personally I always prefer to build them manually except for the base images like Ubuntu 14.04.2:
375379
376-
docker pull elgalu/selenium:2.53.0i
380+
docker pull elgalu/selenium:2.53.0j
377381
378382
### 2. Use this image
379383
@@ -482,3 +486,4 @@ Powered by Supervisor, the container leaves many logs;
482486
483487
484488
[2.47.1m]: https://github.com/elgalu/docker-selenium/releases/tag/2.47.1m
489+
[Selenium]: https://github.com/SeleniumHQ/selenium

READMELeo.md

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
## Build
22

33
time (docker build -t="elgalu/selenium:local" . ;echo $?;beep)
4-
docker run --rm -ti -m 3000M --name=grid -p=4444:24444 -p=5920:25900 -e VIDEO=true -v /dev/shm:/dev/shm elgalu/selenium:local
4+
docker run --rm -ti -m 3000M --name=local -p=4444:24444 -p=5900:25900 -e VIDEO=true -v /dev/shm:/dev/shm elgalu/selenium:local
55

66
### Wait
77
Wait and get versions
88

9-
docker exec grid wait_all_done 30s
10-
docker exec grid versions
9+
docker exec local wait_all_done 30s
10+
docker exec local versions
1111

1212
### Tests
1313
See [CONTRIBUTING](./CONTRIBUTING.md)
@@ -23,13 +23,13 @@ Push setup, first time only:
2323

2424
Build a grid with extra nodes
2525

26-
docker run --rm --name=grid -p 4444:24444 -p 5920:25900 -v /dev/shm:/dev/shm -e VNC_PASSWORD=hola elgalu/selenium:local
26+
docker run --rm --name=local -p 4444:24444 -p 5900:25900 -v /dev/shm:/dev/shm -e VNC_PASSWORD=hola elgalu/selenium:local
2727

28-
docker run --rm --name=node -e DISP_N=13 -e SSHD_PORT=22223 -e SUPERVISOR_HTTP_PORT=29003 -e VNC_PORT=25903 -e SELENIUM_NODE_CH_PORT=25330 -e SELENIUM_NODE_FF_PORT=25331 -e GRID=false -e CHROME=true -e FIREFOX=true --net=container:grid elgalu/selenium:local
28+
docker run --rm --name=node -e DISP_N=13 -e SSHD_PORT=22223 -e SUPERVISOR_HTTP_PORT=29003 -e VNC_PORT=25903 -e SELENIUM_NODE_CH_PORT=25330 -e SELENIUM_NODE_FF_PORT=25331 -e GRID=false -e CHROME=true -e FIREFOX=true --net=container:local elgalu/selenium:local
2929

3030
See logs
3131

32-
docker exec -ti grid bash -c "ls -lah /var/log/cont/"
32+
docker exec -ti local bash -c "ls -lah /var/log/cont/"
3333

3434
## Transfer used browser source artifacts to keep them in the cloud
3535

@@ -39,11 +39,11 @@ See logs
3939

4040
List chrome versions via docker exec
4141

42-
docker exec -ti grid bash -c "ls -lah /home/application/chrome-deb/"
42+
docker exec -ti local bash -c "ls -lah /home/application/chrome-deb/"
4343

4444
List firefox versions via docker exe
4545

46-
docker exec -ti grid bash -c "ls -lah /home/application/firefox-src/ && ls -lah /home/application/selenium/firefox**/firefox/firefox"
46+
docker exec -ti local bash -c "ls -lah /home/application/firefox-src/ && ls -lah /home/application/selenium/firefox**/firefox/firefox"
4747

4848
## Transfer the other way around
4949

@@ -57,17 +57,17 @@ List firefox versions via docker exe
5757

5858
## Run with shared dir
5959

60-
docker run --rm --name=grid -p=127.0.0.1:4460:24444 -p=127.0.0.1:5910:25900 \
60+
docker run --rm --name=local -p=127.0.0.1:4460:24444 -p=127.0.0.1:5910:25900 \
6161
-v /e2e/uploads:/e2e/uploads elgalu/selenium:local
62-
docker run --rm --name=grid -p=4460:24444 -p=5910:25900 \
62+
docker run --rm --name=local -p=4460:24444 -p=5910:25900 \
6363
-v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):$(which docker) elgalu/selenium:local
6464

6565

6666
docker run --rm --name=ff -p=127.0.0.1:4461:24444 -p=127.0.0.1:5911:25900 -v /e2e/uploads:/e2e/uploads elgalu/selenium:local
6767

6868
## Run without shared dir and bind ports to all network interfaces
6969

70-
docker run -d --name=grid -p=0.0.0.0:4444:24444 -p=0.0.0.0:5900:25900 elgalu/selenium:0.1
70+
docker run -d --name=local -p=0.0.0.0:4444:24444 -p=0.0.0.0:5900:25900 elgalu/selenium:0.1
7171

7272
## Opening tunnels
7373

@@ -86,18 +86,18 @@ List firefox versions via docker exe
8686
## Run without dir and bind to all interfaces
8787
Note anything after the image will be taken as arguments for the cmd/entrypoint
8888

89-
docker run --rm --name=grid -p=0.0.0.0:8813:8484 -p=0.0.0.0:2222:2222 -p=0.0.0.0:4470:24444 -p=0.0.0.0:5920:25900 -e SCREEN_WIDTH=1800 -e SCREEN_HEIGHT=1110 -e VNC_PASSWORD=hola -e SSH_AUTH_KEYS="$(cat ~/.ssh/id_rsa.pub)" elgalu/selenium:local
89+
docker run --rm --name=local -p=0.0.0.0:8813:8484 -p=0.0.0.0:2222:2222 -p=0.0.0.0:4470:24444 -p=0.0.0.0:5900:25900 -e SCREEN_WIDTH=1800 -e SCREEN_HEIGHT=1110 -e VNC_PASSWORD=hola -e SSH_AUTH_KEYS="$(cat ~/.ssh/id_rsa.pub)" elgalu/selenium:local
9090

91-
docker run --rm --name=grid -p=4470:24444 -p=5920:25900 -e VNC_PASSWORD=hola elgalu/selenium:local
92-
docker run --rm --name=grid -p=4470:24444 -p=5920:25900 -e VNC_PASSWORD=hola docker.io/elgalu/selenium:local
93-
docker run --rm --name=grid -p=0.0.0.0:4470:24444 -p=0.0.0.0:5920:25900 --add-host myserver.dev:172.17.42.1 elgalu/selenium:local
91+
docker run --rm --name=local -p=4470:24444 -p=5900:25900 -e VNC_PASSWORD=hola elgalu/selenium:local
92+
docker run --rm --name=local -p=4470:24444 -p=5900:25900 -e VNC_PASSWORD=hola docker.io/elgalu/selenium:local
93+
docker run --rm --name=local -p=0.0.0.0:4470:24444 -p=0.0.0.0:5900:25900 --add-host myserver.dev:172.17.42.1 elgalu/selenium:local
9494

9595
However adding a custom host IP to server-selenium.local (e.g. bsele ssh config) is more work:
9696

9797
ssh bsele
9898
sudo sh -c 'echo "10.161.128.36 myserver.dev" >> /etc/hosts'
9999

100-
vncv localhost:5920 -Scaling=60% &
100+
vncv localhost:5900 -Scaling=60% &
101101

102102
docker run --rm --name=ff -p=0.0.0.0:4471:24444 -p=0.0.0.0:5921:25900 elgalu/selenium:local
103103

bin/entry.sh

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,12 @@
33
# Exit immediately if a command exits with a non-zero status
44
# set -e
55

6+
#-----------------------------------------------
7+
# Perform cleanup to support `docker restart`
8+
stop 2>&1 >/dev/null || true
9+
rm -f ${LOGS_DIR}/*
10+
rm -f ${RUN_DIR}/*
11+
612
# echo "-- INFO: Available Firefox Versions: ${FIREFOX_VERSIONS}"
713
echo "-- INFO: Available Firefox Versions: ${FIREFOX_VERSION}"
814

@@ -80,7 +86,6 @@ if [ "${BSTACK_TUNNEL}" = "true" ]; then
8086
export SUPERVISOR_REQUIRED_SRV_LIST="${SUPERVISOR_REQUIRED_SRV_LIST}|browserstack"
8187
fi
8288

83-
8489
#----------------------------------------
8590
# Remove lock files, thanks @garagepoort
8691
clear_x_locks.sh

docs/videos.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@
55
### Pull
66
Pull image
77

8-
docker pull elgalu/selenium:2.53.0i
8+
docker pull elgalu/selenium:2.53.0j
99

1010
### Run
1111
Run a new grid
1212

1313
docker run --rm --name=grid -p 4444:24444 -p 5920:25900 \
1414
-v /dev/shm:/dev/shm -e VNC_PASSWORD=hola \
15-
-e VIDEO=true elgalu/selenium:2.53.0i
15+
-e VIDEO=true elgalu/selenium:2.53.0j
1616

1717
### Wait
1818
Wait for the grid to start

test/before_install_setup

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
# Exit immediately if a command exits with a non-zero status
44
set -e
55

6-
docker --version
6+
docker --version || echo "INFO: No docker installed yet"
77

88
sudo ./test/install_docker
99

10-
docker --version
10+
docker --version || (echo "FATAL: No docker installed" && exit 1)

0 commit comments

Comments
 (0)