[英]What postgres connection string on AWS docker multicontainer app?
如果我通過AWS上的Dockerrun.aws.js
運行Dockerrun.aws.js
多Dockerrun.aws.js
應用程序,應該使用哪個Postgres連接字符串?
我有一個Node.JS / Postgres / docker網絡應用程序。 Postgres在自己的容器中運行,應用程序也是如此。 在本地,該應用程序運行正常。 當我通過ECR和BeanStalk將其部署到AWS 時 ,該應用程序成功部署並運行,但該Web應用程序未連接到Postgres。
在docker-compose.yaml
,連接字符串中的主機是容器的名稱(在我的情況下為db )。 這不適用於AWS 。 localhost
或127.0.0.1
都沒有。
這是我的Dockerrun.aws.js
:
{
"AWSEBDockerrunVersion": 2,
"volumes": [
{
"name": "db-data",
"host": {
"sourcePath": "/data/db"
}
}
],
"containerDefinitions": [
{
"name": "db",
"image": "db_image_name",
"essential": true,
"memory": 128,
"environment": [
{
"name": "POSTGRES_USER",
"value": "postgres"
},
{
"name": "POSTGRES_PASSWORD",
"value": "password"
},
{
"name": "PGDATA",
"value": "/data/db/pgdata"
}
],
"portMappings": [
{
"hostPort": 5432,
"containerPort": 5432
}
],
"mountPoints": [
{
"sourceVolume": "db-data",
"containerPath": "/data/db"
}
]
},
{
"name": "app",
"image": "app_image_name",
"essential": true,
"memory": 128,
"environment": [
{
"name": "NODE_ENV",
"value": "production"
},
{
"name": "DB_HOST",
"value": "db"
},
{
"name": "DB_PORT",
"value": "5432"
},
{
"name": "DB_PASSWORD",
"value": "password"
}
],
"links": [
"db"
],
"portMappings": [
{
"hostPort": 80,
"containerPort": 3000
}
]
}
]
}
我應該在環境變量DB_HOST中放入什么? (應用程序使用DB_HOST和DB_PORT來構造連接字符串。)非常感謝。
Beanstalk和Dockerrun.aws.json格式使您可以使用以下語法從同一定義文件鏈接容器:
"links": ["some-name"]
在您的情況下,您可以添加指向"db"
的鏈接,並且postgres將在db
下的應用程序容器中可用。 如果您不想將postgres容器公開,則甚至不需要映射容器端口。
您可以看到以下文檔中使用的示例: https : //docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker_v2config.html#create_deploy_docker_v2config_dockerrun
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.