python - 如何设置 docker compose 以使用 ssh 通过 EC2 Bastion 连接到私有子网上的 AWS RDS
问题描述
我有一个 django 应用程序的以下配置,该应用程序通过 ssh 进入 ec2 堡垒,我尝试按照这个示例https://emmer.dev/blog/tunneling-a-database-connection-with-docker-compose/ 我是仍然无法配置我的 docker compose 文件以接受到位于私有子网中的 AWS Postgres RDS 的 ssh 隧道。
version: "3.9"
services:
app:
build: ./app
restart: always
env_file: .env
volumes:
- ./app:/app
- ./app/static:/app/static
ports:
- 8000:8000
depends_on:
- db
links:
- db:db
networks:
- "app_network"
db:
image: postgres
restart: always
env_file: .env
volumes:
- postgres_data:/var/lib/postgresql/data/
ports:
- 5432:5432
networks:
- "app_network"
networks:
app_network:
driver: bridge
volumes:
postgres_data:
发生的事情是通过python manage.py runserver
我使用 django 本身能够连接到 RDS 实例,一切都很好。
现在,当我尝试对 docker compose 执行相同操作,docker compose exec app python manage.py migrate
或者尝试在 docker compose 启动后从 django shell 访问 RDS 时docker-compose up -d
,数据库崩溃并显示以下消息:
django.db.utils.OperationalError: could not translate host name "xxx.zzz.us-east-z.rds.amazonaws.com" to address: nodename nor servname provided, or not known
显然问题是 docker compose 没有选择 ssh 隧道连接
我尝试了多种方法,但仍然不成功。
有人可以帮我弄清楚该怎么做吗
先感谢您
解决方案
推荐阅读
- python - print(*) 和 *.print() 之间的区别
- azure-functions - 新功能项目授权
- c# - Unity 编辑器选项弹出窗口?(Unity Editor 更新选项)
- android - Kotlin:未解决的参考软银机器人
- wordpress - 我可以编辑主机文件以查看新网站并仍然访问旧网站吗?
- jquery - 获取虚假文本标签而不是远程自定义消息
- excel - 计算每个工作表中的页数
- spring - Spring自定义@ConditionalOnProperty注解不能使用@AliasFor
- azure-devops - 使用 PowerShell 同步 Azure 分析服务模型
- laravel - 未定义变量:posts(查看:C:\xampp\htdocs\blog\resources\views\store\search.blade.php)