你好,我是Azure的新手,我需要将Postgres数据库部署到Azure容器应用程序。我知道在容器化环境中托管数据库不是一个好做法。我按照Microsoft文档中的link来部署应用程序,以下是我的配置,
我创建了一个VNET,因为我需要选择TCP作为入口类型,并将目标端口和公开端口Map为5432到5432
在我部署应用程序并尝试使用Pgadmin连接到DB后,我收到以下错误。
我希望确保Postgres数据库在Azure容器应用程序中成功运行,并且需要从Pgadmin连接。
rqqzpn5f1#
这里有两个问题:
关于第一个问题,“命令覆盖”是用于覆盖在您的docker映像中运行的命令,而不是docker命令本身。因此,需要将这些值放在下面的环境变量部分中:例如:
或使用Azure CLI
az containerapp create \ --name $POSTGRES_INSTANCE_NAME \ --resource-group $RESOURCE_GROUP \ --environment $CONTAINERAPPS_ENVIRONMENT \ --image docker.io/postgres:15 \ --secrets pgpass="$POSTGRES_PASSWORD" \ --env-vars POSTGRES_USER="$POSTGRES_USER" POSTGRES_DB="$POSTGRES_DB" POSTGRES_PASSWORD=secretref:pgpass \ --transport tcp \ --target-port 5432 \ --ingress external \ --min-replicas 1 \ --max-replicas 1
您可以将--ingress external更改为--ingress internal,然后在相同的环境中部署pgadmin。部署pgadmin
--ingress external
--ingress internal
az containerapp create \ --name pgadmin \ --resource-group $RESOURCE_GROUP \ --environment $CONTAINERAPPS_ENVIRONMENT \ --image dpage/pgadmin4:6.15 \ --secrets pgpass="$PGADMIN_PASSWORD" \ --env-vars PGADMIN_DEFAULT_EMAIL="$PGADMIN_EMAIL" PGADMIN_LISTEN_PORT="8080" PGADMIN_DEFAULT_PASSWORD=secretref:pgpass \ --transport http \ --target-port 8080 \ --ingress external \ --min-replicas 1 \ --max-replicas 1
1条答案
按热度按时间rqqzpn5f1#
这里有两个问题:
关于第一个问题,“命令覆盖”是用于覆盖在您的docker映像中运行的命令,而不是docker命令本身。
因此,需要将这些值放在下面的环境变量部分中:
例如:
或使用Azure CLI
您可以将
--ingress external
更改为--ingress internal
,然后在相同的环境中部署pgadmin。部署pgadmin