This article gives an example of how to deploy MQTT Client, Broker, Publisher and the correspoding database.
Basic
docker ps --filter "status=exited"
docker ps -a grep
docker inspect --format='{{.State.ExitCode}}'
Docker Compose Exit Code
- Exit Code 0: Absence of an attached foreground process
- Exit Code 1: Indicates failure due to application error
- Exit Code 137: Indicates failure as container received SIGKILL (Manual intervention or ‘oom-killer’ [OUT-OF-MEMORY])
- Exit Code 139: Indicates failure as container received SIGSEGV
- Exit Code 143: Indicates failure as container received SIGTERM
Makefile
- sample example fromMakefile
Makefile
version.sh
# Example version script.
# Please choose one version or create your own
# Node.js: grep the version from a package.json file with jq
jq -rM '.version' package.json
# Elixir: grep the version from a mix file
cat mix.exs | grep version | grep '\([0-9]\+\.\?\)\{3\}' -o
Dockerfile and Docker-compose
docker-compose.yml
version: "3.9"
services:
mqtt_client:
build:
context: services/mqtt_client/.
env_file:
- ./env.dev
broker:
build: services/development_broker/.
ports:
- "1883:1883"
db:
image: postgres:12-alpine
ports:
- "5432:5432"
volumes:
- db-data:/var/lib/postgresql/data/
environment:
- POSTGRES_USER=test
- POSTGRES_PASSWORD=test
- POSTGRES_DB=test
s3:
image: minio/minio
ports:
- "9000:9000"
- "9001:9001"
volumes:
- s3-data:/data
environment:
- MINIO_ROOT_USER=develop
- MINIO_ROOT_PASSWORD=develop1
entrypoint: minio server /data --console-address ":9001"
volumes:
s3-data:
db-data:
env.dev
DATABASE_URL=postgresql://test:test@db:5432
MQTT_BROKER_URL=broker
MQTT_TOPIC=raw-frames
S3_URL=s3:9000
S3_ACCESS_KEY=develop
S3_SECRET_KEY=develop1
S3_BUCKET_NAME=raw-frames
S3_FORCE_SSL=False
Dockerfile
-MQTT CLient
FROM python as intermediate
RUN git clone https://gitlab+deploy-token-819163:soMJjpdajTYA51PAThqG@gitlab.com/incoretex/libraries/pycoretex.git
RUN cd /pycoretex && git checkout 5-package
FROM python
COPY --from=intermediate /pycoretex /src/pycoretex
RUN (cd /src/pycoretex && pip3 install .)
COPY src/* /src/app/
WORKDIR /src/app/
COPY requirements.txt .
RUN pip install -r requirements.txt
CMD python3 client.py
requirement.txt
boto3==1.21.0
botocore==1.24.0
certifi==2021.10.8
jmespath==0.10.0
minio==7.1.3
numpy==1.22.2
paho-mqtt==1.6.1
protobuf==3.19.4
psycopg2==2.9.3
python-dateutil==2.8.2
s3transfer==0.5.1
six==1.16.0
SQLAlchemy==1.4.31
urllib3==1.26.8
Dockerfile
-MQTT Broker
FROM eclipse-mosquitto:2.0.14
COPY mosquitto.conf /mosquitto/config/mosquitto.conf
mosquitto.conf
allow_anonymous true
listener 1883
persistence true
to be continue ...
Comments | NOTHING