我是这里的新大使。我已经走过tutorial,以了解如何使用大使网关。我试图通过Docker Compose在本地运行它,直到准备好将其部署到生产中的K8为止。
我的用例是所有http通信都进入端口80,然后定向到适当的服务。在工作目录中有一个docker-compose.yaml文件来引用/ config目录中的服务是否被认为是最佳实践?我问,因为这似乎并未真正提取我的文件(postgres启动未在控制台中显示)。当我运行“ docker ps”时,我只显示:
CONTAINER ID IMAGE PORTS NAMES
8bc8393ac04c 05a916199684 k8s_statsd_ambassador-8564bfb874-q97l9_default_e775d686-a93c-11e8-9caa-025000000001_0
1c00f2341caf d7cf7cf837f9 k8s_ambassador_ambassador-8564bfb874-q97l9_default_e775d686-a93c-11e8-9caa-025000000001_0
fe20c4819514 05a916199684 k8s_statsd_ambassador-8564bfb874-xzvkl_default_e775ffe6-a93c-11e8-9caa-025000000001_0
ba6415b028ba d7cf7cf837f9 k8s_ambassador_ambassador-8564bfb874-xzvkl_default_e775ffe6-a93c-11e8-9caa-025000000001_0
9df07dc5083d 05a916199684 k8s_statsd_ambassador-8564bfb874-w5vsq_default_e773ed53-a93c-11e8-9caa-025000000001_0
682e1f9902a0 d7cf7cf837f9 k8s_ambassador_ambassador-8564bfb874-w5vsq_default_e773ed53-a93c-11e8-9caa-025000000001_0
bb6d2f749491 quay.io/datawire/ambassador:0.40.2 0.0.0.0:80->80/tcp apigateway_ambassador_1
我有一个docker-compose.yaml:
version: '3.1'
# Define the services/containers to be run
services:
ambassador:
image: quay.io/datawire/ambassador:0.40.2
ports:
- 80:80
volumes:
# mount a volume where we can inject configuration files
- ./config:/ambassador/config
postgres:
image: my-postgresql
ports:
- '5432:5432'
和/config/mapping-postgres.yaml中:
---
apiVersion: ambassador/v0
kind: Mapping
name: postgres_mapping
rewrite: ""
service: postgres:5432
volumes:
- ../my-postgres:/docker-entrypoint-initdb.d
environment:
- POSTGRES_MULTIPLE_DATABASES=db1, db2, db3
- POSTGRES_USER=<>
- POSTGRES_PASSWORD=<>
答案 0 :(得分:0)
volumes
和environment
是Ambassador Mappings的无效配置。大使使您可以代理postgres,但是身份验证必须由您的应用程序处理。
话虽如此,看来您的Postgres容器尚未启动。 (也许是因为它需要初始配置)。您可以使用以下方法检查错误:
$ docker ps -a | grep postgres
$ docker logs <container-id-from-previous-step>
您还可以检查Postgres泊坞窗撰写示例here。
在工作目录中有一个docker-compose.yaml文件来引用/ config目录中的服务是否被认为是最佳实践?
这很标准,但是您可以为此使用任何目录。