docker-compose - docker-compose prod/dev 设置中的 FastAPI + Appwrite.io?
问题描述
发现了appwrite.io,我真的很喜欢 appwrite 提供的功能。它类似于 Firebase,但开源。
我正在尝试使 appwrite 与 Python/FastAPI 一起工作。
下面是项目的文件夹结构。文件夹api
将包含所有额外的逻辑。Dockerfile
取自uvicorn-gunicorn-fastapi-docker repo。
├── project
│ ├── docker-compose.yml
│ ├── app
│ ├── api
│ ├── Dockerfile
│ ├── main.py
│ ├── requirements.txt
└──
在 docker-compose 文件中,我添加了app
启动 FastAPI 的服务。
version: '3'
services:
app:
build: ./app
ports:
- 3000:3000
restart: unless-stopped
volumes:
- ./app:/usr/src/app
traefik:
image: traefik:v2.1.4
command:
- --providers.file.directory=/storage/config
- --providers.file.watch=true
- --providers.docker=true
- --entrypoints.web.address=:80
- --entrypoints.websecure.address=:443
restart: unless-stopped
ports:
- 5000:80
- 443:443
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- appwrite-config:/storage/config:ro
- appwrite-certificates:/storage/certificates:ro
depends_on:
- appwrite
networks:
- gateway
- appwrite
appwrite:
image: appwrite/appwrite:0.6.2
restart: unless-stopped
networks:
- appwrite
labels:
- traefik.http.routers.appwrite.rule=PathPrefix(`/`)
- traefik.http.routers.appwrite-secure.rule=PathPrefix(`/`)
- traefik.http.routers.appwrite-secure.tls=true
volumes:
- appwrite-uploads:/storage/uploads:rw
- appwrite-cache:/storage/cache:rw
- appwrite-config:/storage/config:rw
- appwrite-certificates:/storage/certificates:rw
depends_on:
- mariadb
- redis
- smtp
- influxdb
- telegraf
environment:
- _APP_ENV=production
- _APP_OPENSSL_KEY_V1=your-secret-key
- _APP_DOMAIN=localhost
- _APP_DOMAIN_TARGET=localhost
- _APP_REDIS_HOST=redis
- _APP_REDIS_PORT=6379
- _APP_DB_HOST=mariadb
- _APP_DB_PORT=3306
- _APP_DB_SCHEMA=appwrite
- _APP_DB_USER=user
- _APP_DB_PASS=password
- _APP_INFLUXDB_HOST=influxdb
- _APP_INFLUXDB_PORT=8086
- _APP_STATSD_HOST=telegraf
- _APP_STATSD_PORT=8125
- _APP_SMTP_HOST=smtp
- _APP_SMTP_PORT=25
mariadb:
image: appwrite/mariadb:1.0.3
restart: unless-stopped
networks:
- appwrite
volumes:
- appwrite-mariadb:/var/lib/mysql:rw
environment:
- MYSQL_ROOT_PASSWORD=rootsecretpassword
- MYSQL_DATABASE=appwrite
- MYSQL_USER=user
- MYSQL_PASSWORD=password
command: 'mysqld --innodb-flush-method=fsync'
smtp:
image: appwrite/smtp:1.0.1
restart: unless-stopped
networks:
- appwrite
environment:
- MAILNAME=appwrite
- RELAY_NETWORKS=:192.168.0.0/24:10.0.0.0/16
redis:
image: redis:5.0
restart: unless-stopped
networks:
- appwrite
volumes:
- appwrite-redis:/data:rw
influxdb:
image: influxdb:1.6
restart: unless-stopped
networks:
- appwrite
volumes:
- appwrite-influxdb:/var/lib/influxdb:rw
telegraf:
image: appwrite/telegraf:1.0.0
restart: unless-stopped
networks:
- appwrite
networks:
gateway:
appwrite:
volumes:
appwrite-mariadb:
appwrite-redis:
appwrite-cache:
appwrite-uploads:
appwrite-certificates:
appwrite-influxdb:
appwrite-config:
我尝试了 docker-composelinks
和networks
toappwrite
但它们都没有工作。Bellow 是我尝试使用 python appwrite sdk 时遇到的错误。
{"result":"HTTPConnectionPool(host='localhost', port=5000): Max retries exceeded with url: /v1/database/collections (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f5517795d60>: Failed to establish a new connection: [Errno 111] Connection refused'))"}
解决方案
推荐阅读
- c# - 如何修改 UWP 数字框的内部边距(填充)?
- python - 成功登录PyQt5 Python3后打开另一个窗口
- node.js - 推送到vercel后无法连接到websocket服务器
- node.js - 防止通过短信验证应用程序的 DDoS
- python - 在 Python XPath 查询中注册命名空间
- c++ - 在 Qt 6 中找不到 QtCore/QTextCodec
- python - pymongo 是异步的吗?
- python - IEX API技术指标批量调用
- mongodb - 如何通过 r2d2 和 actix 在 MongoDB 中保存文档?
- laravel - SQLSTATE [42804] 尝试 heroku 运行 php artisan migrate 时出错