RDS
Protocol: Query (XML) for management API + PostgreSQL / MySQL wire protocol for data plane
Management Endpoint: POST http://localhost:4566/
Data Endpoint: localhost:<proxy-port> (TCP)
Floci manages real PostgreSQL, MySQL, and MariaDB Docker containers and proxies TCP connections to them, including IAM authentication support.
Supported Management Actions
| Action | Description |
|---|---|
CreateDBInstance |
Start a new database instance |
DescribeDBInstances |
List instances and their connection info |
DeleteDBInstance |
Stop and remove an instance |
ModifyDBInstance |
Update instance settings |
RebootDBInstance |
Restart a database instance |
CreateDBCluster |
Create an Aurora-compatible cluster |
DescribeDBClusters |
List clusters |
DeleteDBCluster |
Delete a cluster |
ModifyDBCluster |
Update cluster settings |
CreateDBParameterGroup |
Create a parameter group |
DescribeDBParameterGroups |
List parameter groups |
DeleteDBParameterGroup |
Delete a parameter group |
ModifyDBParameterGroup |
Update parameter group settings |
DescribeDBParameters |
List parameters in a group |
Configuration
floci:
services:
rds:
enabled: true
proxy-base-port: 7001
proxy-max-port: 7099
default-postgres-image: "postgres:16-alpine"
default-mysql-image: "mysql:8.0"
default-mariadb-image: "mariadb:11"
Docker Compose
RDS requires the Docker socket and port range exposure:
services:
floci:
image: hectorvent/floci:latest
ports:
- "4566:4566"
- "7001-7099:7001-7099" # RDS proxy ports
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
FLOCI_SERVICES_DOCKER_NETWORK: my-project_default
FLOCI_SERVICES_RDS_PROXY_BASE_PORT: "7001"
Examples
export AWS_ENDPOINT=http://localhost:4566
# Create a PostgreSQL instance
aws rds create-db-instance \
--db-instance-identifier mypostgres \
--db-instance-class db.t3.micro \
--engine postgres \
--master-username admin \
--master-user-password secret123 \
--allocated-storage 20 \
--endpoint-url $AWS_ENDPOINT
# Get connection details
aws rds describe-db-instances \
--db-instance-identifier mypostgres \
--query 'DBInstances[0].Endpoint' \
--endpoint-url $AWS_ENDPOINT
# Connect with psql (use the port returned above)
psql -h localhost -p 7001 -U admin
# Create a MySQL instance
aws rds create-db-instance \
--db-instance-identifier mymysql \
--db-instance-class db.t3.micro \
--engine mysql \
--master-username root \
--master-user-password secret123 \
--allocated-storage 20 \
--endpoint-url $AWS_ENDPOINT
# Connect with mysql client
mysql -h 127.0.0.1 -P 7002 -u root -psecret123
Supported Engines
| Engine | Default image |
|---|---|
postgres |
postgres:16-alpine |
mysql |
mysql:8.0 |
mariadb |
mariadb:11 |
Override the image per-instance with the --engine-version flag or globally via environment variables.