嗨,我是Azure的新手,我需要将Postgres部署到Azure容器应用程序。我知道在容器环境中托管DB不是一个好做法。
我遵循了微软文档中的这个链接来部署应用程序,下面是我的配置,

我创建了一个VNET,因为我需要选择TCP作为入侵类型,并将目标端口和公开端口映射为5432到5432。

在部署应用程序并尝试使用Pgadmin连接到DB之后,我将得到以下错误。

我希望确保Postgres在Azure Container中成功运行,并需要从Pgadmin连接。
发布于 2022-11-21 21:44:38
这里有两个问题:
关于第一个问题,“命令覆盖”是为了覆盖在您的停靠库映像中运行的命令,而不是停靠器命令本身。
因此,这些值需要放在下面的环境变量部分:
像这样:

或者用浅蓝色的阴蒂
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应该能够在$POSTGRES_INSTANCE_NAME:5432上到达postgres
部署pgadmin
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 1https://stackoverflow.com/questions/74519483
复制相似问题