fastiot.cli.common.infrastructure_services module

pydantic model fastiot.cli.common.infrastructure_services.NatsService[source]
field name: str = 'nats'

Name of the external service, e.g. mariadb. Per convention these names should be in lower case

field image: str = 'nats:latest'

Name of the image

field ports: List[InfrastructureServicePort] = [InfrastructureServicePort(container_port=4222, default_port_mount=4222, env_var='FASTIOT_NATS_PORT')]
pydantic model fastiot.cli.common.infrastructure_services.MariaDBService[source]

Here, all relevant environment variables are listed to build a MariaDB Service,

field name: str = 'mariadb'

Name of the external service, e.g. mariadb. Per convention these names should be in lower case

field image: str = 'mariadb:10.8'

Name of the image

field ports: List[InfrastructureServicePort] = [InfrastructureServicePort(container_port=3306, default_port_mount=3306, env_var='FASTIOT_MARIA_DB_PORT')]
field environment: List[InfrastructureServiceEnvVar] = [InfrastructureServiceEnvVar(name='MYSQL_ROOT_USER', default='root', env_var='FASTIOT_MARIA_DB_USER'), InfrastructureServiceEnvVar(name='MYSQL_ROOT_PASSWORD', default='12345', env_var='FASTIOT_MARIA_DB_PASSWORD'), InfrastructureServiceEnvVar(name='MYSQL_INITDB_SKIP_TZINFO', default='yes', env_var='')]
field password_env_vars: List[str] = ['FASTIOT_MARIA_DB_PASSWORD']

List of environment variables containing a password. Those will be filled with random passwords for new projects automatically.

field volumes: List[InfrastructureServiceVolume] = [InfrastructureServiceVolume(container_volume='/var/lib/mysql', env_var='FASTIOT_MARIA_DB_VOLUME')]
pydantic model fastiot.cli.common.infrastructure_services.MongoDBService[source]

Here, all relevant environment variables are listed to build a MongoDB Service,

field name: str = 'mongodb'

Name of the external service, e.g. mariadb. Per convention these names should be in lower case

field image: str = 'mongo:5.0'

Name of the image

field ports: List[InfrastructureServicePort] = [InfrastructureServicePort(container_port=27017, default_port_mount=27017, env_var='FASTIOT_MONGO_DB_PORT')]
field environment: List[InfrastructureServiceEnvVar] = [InfrastructureServiceEnvVar(name='MONGO_INITDB_ROOT_USERNAME', default='root', env_var='FASTIOT_MONGO_DB_USER'), InfrastructureServiceEnvVar(name='MONGO_INITDB_ROOT_PASSWORD', default='12345', env_var='FASTIOT_MONGO_DB_PASSWORD')]
field password_env_vars: List[str] = ['FASTIOT_MONGO_DB_PASSWORD']

List of environment variables containing a password. Those will be filled with random passwords for new projects automatically.

field volumes: List[InfrastructureServiceVolume] = [InfrastructureServiceVolume(container_volume='/data/db', env_var='FASTIOT_MONGO_DB_VOLUME')]
field compose_extras: List[InfrastructureServiceComposeExtras] = [InfrastructureServiceComposeExtras(option_name='mem_limit', env_var='FASTIOT_MONGO_DB_MEM_LIMIT')]
pydantic model fastiot.cli.common.infrastructure_services.MongoDB4Service[source]

Infrastructure service for a MongoDB in version 4. This is the latest version to work with a Raspberry Pi 4 (s. https://stackoverflow.com/questions/68419196 for more details)

field name: str = 'mongodb4'

Name of the external service, e.g. mariadb. Per convention these names should be in lower case

field image: str = 'mongo:4.4.18'

Name of the image

pydantic model fastiot.cli.common.infrastructure_services.InfluxDBService[source]

Here, all relevant environment variables are listed to build a InfluxDB Service,

field name: str = 'influxdb'

Name of the external service, e.g. mariadb. Per convention these names should be in lower case

field image: str = 'influxdb:2.0'

Name of the image

field ports: List[InfrastructureServicePort] = [InfrastructureServicePort(container_port=8086, default_port_mount=8086, env_var='FASTIOT_INFLUX_DB_PORT')]
field environment: List[InfrastructureServiceEnvVar] = [InfrastructureServiceEnvVar(name='DOCKER_INFLUXDB_INIT_USERNAME', default='influx_db_admin', env_var='FASTIOT_INFLUX_DB_USER'), InfrastructureServiceEnvVar(name='DOCKER_INFLUXDB_INIT_PASSWORD', default='mf9ZXfeLKuaL3HL7w', env_var='FASTIOT_INFLUX_DB_PASSWORD'), InfrastructureServiceEnvVar(name='DOCKER_INFLUXDB_INIT_MODE', default='setup', env_var='FASTIOT_INFLUX_DB_MODE'), InfrastructureServiceEnvVar(name='DOCKER_INFLUXDB_INIT_ORG', default='FASTIOT', env_var='FASTIOT_INFLUX_DB_ORG'), InfrastructureServiceEnvVar(name='DOCKER_INFLUXDB_INIT_BUCKET', default='things', env_var='FASTIOT_INFLUX_DB_BUCKET'), InfrastructureServiceEnvVar(name='DOCKER_INFLUXDB_INIT_ADMIN_TOKEN', default='12345', env_var='FASTIOT_INFLUX_DB_TOKEN')]
field password_env_vars: List[str] = ['FASTIOT_INFLUX_DB_TOKEN', 'FASTIOT_INFLUX_DB_PASSWORD']

List of environment variables containing a password. Those will be filled with random passwords for new projects automatically.

field volumes: List[InfrastructureServiceVolume] = [InfrastructureServiceVolume(container_volume='/var/lib/influxdb2', env_var='FASTIOT_INFLUX_DB_VOLUME')]
pydantic model fastiot.cli.common.infrastructure_services.TimeScaleDBService[source]

Here, all relevant environment variables are listed to build a TimeScaleDB Service,

field name: str = 'timescaledb'

Name of the external service, e.g. mariadb. Per convention these names should be in lower case

field image: str = 'timescale/timescaledb:latest-pg14'

Name of the image

field ports: List[InfrastructureServicePort] = [InfrastructureServicePort(container_port=5432, default_port_mount=5432, env_var='FASTIOT_TIME_SCALE_DB_PORT')]
field environment: List[InfrastructureServiceEnvVar] = [InfrastructureServiceEnvVar(name='POSTGRES_USER', default='postgres', env_var='FASTIOT_TIME_SCALE_DB_USER'), InfrastructureServiceEnvVar(name='POSTGRES_PASSWORD', default='12345', env_var='FASTIOT_TIME_SCALE_DB_PASSWORD'), InfrastructureServiceEnvVar(name='POSTGRES_DB', default='fastiot_db', env_var='FASTIOT_TIME_SCALE_DB_DATABASE')]
field host_name_env_var: str = 'FASTIOT_TIME_SCALE_DB_HOST'

The environment variable setting the hostname. This variable needs special attention: When working in a local development environment this defaults to localhost. Within a docker network the value needs to be the docker-internal hostname.

field password_env_vars: List[str] = ['FASTIOT_TIME_SCALE_DB_PASSWORD']

List of environment variables containing a password. Those will be filled with random passwords for new projects automatically.

field volumes: List[InfrastructureServiceVolume] = [InfrastructureServiceVolume(container_volume='/var/lib/postgresql/data', env_var='FASTIOT_TIME_SCALE_DB_VOLUME')]
pydantic model fastiot.cli.common.infrastructure_services.RedisService[source]

Here, all relevant environment variables are listed to build a Redis Service,

field name: str = 'redis'

Name of the external service, e.g. mariadb. Per convention these names should be in lower case

field image: str = 'redis:7'

Name of the image

field ports: List[InfrastructureServicePort] = [InfrastructureServicePort(container_port=6379, default_port_mount=6379, env_var='FASTIOT_REDIS_PORT')]
field environment: List[InfrastructureServiceEnvVar] = [InfrastructureServiceEnvVar(name='REDIS_PASSWORD', default='12345', env_var='FASTIOT_REDIS_PASSWORD')]
field password_env_vars: List[str] = ['FASTIOT_REDIS_PASSWORD']

List of environment variables containing a password. Those will be filled with random passwords for new projects automatically.

field volumes: List[InfrastructureServiceVolume] = [InfrastructureServiceVolume(container_volume='/data', env_var='FASTIOT_REDIS_VOLUME')]
pydantic model fastiot.cli.common.infrastructure_services.ElasticSearch[source]

Here, all relevant environment variables are listed to build an ElasticSearch Service,

field name: str = 'elasticsearch'

Name of the external service, e.g. mariadb. Per convention these names should be in lower case

field image: str = 'docker.elastic.co/elasticsearch/elasticsearch:7.17.8'

Name of the image

field password_env_vars: List[str] = ['FASTIOT_ELASTICSEARCH_PASSWORD']

List of environment variables containing a password. Those will be filled with random passwords for new projects automatically.

field ports: List[InfrastructureServicePort] = [InfrastructureServicePort(container_port=9200, default_port_mount=9200, env_var='FASTIOT_ELASTICSEARCH_PORT')]
field environment: List[InfrastructureServiceEnvVar] = [InfrastructureServiceEnvVar(name='ELASTIC_PASSWORD', default='12345', env_var='FASTIOT_ELASTICSEARCH_PASSWORD'), InfrastructureServiceEnvVar(name='ES_JAVA_OPTS', default='-Xmx256m -Xms256m', env_var=''), InfrastructureServiceEnvVar(name='discovery.type', default='single-node', env_var=''), InfrastructureServiceEnvVar(name='cluster.name', default='single-node-cluster', env_var=''), InfrastructureServiceEnvVar(name='network.host', default='0.0.0.0', env_var='')]
field volumes: List[InfrastructureServiceVolume] = [InfrastructureServiceVolume(container_volume='/usr/share/elasticsearch/data', env_var='FASTIOT_ELASTICSEARCH_VOLUME')]