Adapting Shellhttpd
Edit shellhttpd
back to its original state.
Tip
In case you do not have the shellhttpd
application. Complete the tutorial:
Creating Your First Target
Open a new terminal on your host machine and go into your containers repo folder.
cd containers/
Edit httpd.sh
according to the example below:
vi shellhttpd/httpd.sh
#!/bin/sh -e
PORT="${PORT-8080}"
MSG="${MSG-OK}"
RESPONSE="HTTP/1.1 200 OK\r\n\r\n${MSG}\r\n"
while true; do
echo -en "$RESPONSE" | nc -l -p "${PORT}" || true
echo "= $(date) ============================="
done
Edit the file Dockerfile
according to the example below:
vi shellhttpd/Dockerfile
FROM alpine
COPY httpd.sh /usr/local/bin/
CMD ["/usr/local/bin/httpd.sh"]
Edit the file docker-compose.yml
according to the example below:
vi shellhttpd/docker-compose.yml
version: '3.2'
services:
httpd:
image: hub.foundries.io/cavel/shellhttpd:latest
restart: always
ports:
- 8080:${PORT-8080}
environment:
MSG: "Tag devel, test:01"
Note that MSG
is defined with This is the TEST 01
.
Commit and push all changes:
git status
git add shellhttpd/docker-compose.yml
git add shellhttpd/httpd.sh
git add shellhttpd/Dockerfile
git commit -m "This is the TEST 02"
git push
Wait for your build to finish by checking the latest Target on the Devices tab for your Factory.
Use fioctl
to configure your device to run just the shellhttpd
application:
fioctl devices config updates --apps shellhttpd <device-name>
Changing apps from: [] -> [shellhttpd]
Changing packagemanager to ostree+compose_apps
In a few minutes, your device should receive an update.
On your device, test the container again:
wget -qO- 127.0.0.1:8080
This is the TEST 01
Check again the Target version list with fioctl
fioctl targets list
VERSION TAGS APPS HARDWARE IDs
------- ---- ---- ------------
2 devel raspberrypi3-64
3 master raspberrypi3-64
4 devel shellhttpd raspberrypi3-64
5 devel shellhttpd raspberrypi3-64
6 devel shellhttpd raspberrypi3-64
7 devel shellhttpd raspberrypi3-64
8 devel shellhttpd-mqtt,mosquitto,shellhttpd,flask-mqtt-nginx raspberrypi3-64
9 devel mosquitto,shellhttpd,flask-mqtt-nginx,shellhttpd-mqtt raspberrypi3-64
10 devel mosquitto,shellhttpd,flask-mqtt-nginx,shellhttpd-mqtt raspberrypi3-64
Check what Target your device is running:
fioctl device list
NAME FACTORY TARGET STATUS APPS UP-TO-DATE
---- ------- ------ ------ ---- ----------
<device-name> <factory> raspberrypi3-64-lmp-10 OK flask-mqtt-nginx,mosquitto,shellhttpd-mqtt true
Whenever you push changes to the devel
branch, the CI will build and generate a new Target tagged with devel
.
As a result, devices following devel
will update to the latest Target.