Adapting Shellhttpd
Edit shellhttpd
back to its original state.
Tip
If you do not have the shellhttpd
application, complete Creating Your First Target.
Open a terminal on your host machine and go into your containers
repo folder.
cd containers/
Edit httpd.sh
:
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 Dockerfile
:
vi shellhttpd/Dockerfile
FROM alpine
COPY httpd.sh /usr/local/bin/
CMD ["/usr/local/bin/httpd.sh"]
Edit docker-compose.yml
:
vi shellhttpd/docker-compose.yml
version: '3.2'
services:
httpd:
image: hub.foundries.io/<factory>/shellhttpd:latest
restart: always
ports:
- 8080:${PORT-8080}
environment:
MSG: "${MSG-Hello world}"
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 "Changes for adapting shellhttpd tutorial"
git push
Wait for your build to finish by checking the latest Target on the Devices tab.
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.
Test the container on your device:
wget -qO- 127.0.0.1:8080
Hello world
Check the Target version list with fioctl
fioctl targets list
VERSION TAGS APPS HARDWARE IDs
------- ---- ---- ------------
2 devel raspberrypi3-64
3 main 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.