在我们的情况下,我们希望在我们的 ECS 集群上运行一个应用程序容器和一个搜索容器作为单独的服务。
我需要创建一个搜索容器以在 ECS/Fargate 下运行并链接到负载均衡器。
我需要创建一个能够与我们的 PostgreSQL RDS 实例通信的应用容器,该实例已经设置了 fusionauth 表,并通过负载均衡器与搜索容器通信。
我从 docker-compose.yaml 开始并删除了 db 服务。我将 fusionauth 部分中的值更改为
fusionauth:
image: fusionauth/fusionauth-app:latest
depends_on:
- search
environment:
DATABASE_URL: jdbc:postgresql://mypostgre-rds-endpoint:5432/fusionauth
DATABASE_ROOT_USER: root_user_account
DATABASE_ROOT_PASSWORD: root_user_password
DATABASE_USER: fusionauth
DATABASE_PASSWORD: fusionauth_user_password
FUSIONAUTH_MEMORY: ${FUSIONAUTH_MEMORY}
FUSIONAUTH_SEARCH_SERVERS: http://search:9200
FUSIONAUTH_URL: http://load-balancer-url:9011
networks:
- db
- search
restart: unless-stopped
ports:
- 9011:9011
volumes:
- fa_config:/usr/local/fusionauth/config
第一个问题是当我运行这个容器时,它进入维护模式并尝试创建数据库。我收到一个语言环境错误。我不需要维护模式,我只需要它连接到数据库。所以我想我一定是错误地定义了数据库 url。
第二个问题是我需要能够为搜索做同样的事情:创建一个在 ECS/Fargate 下运行并通过负载均衡器访问的容器。
我不是码头专家(还)。但是我找不到任何特定的文档来帮助我弄清楚如何配置和部署搜索和应用程序容器。
任何指向现有文档的指针或帮助都可以让它运行。
我知道我必须更改 docker-compose 文件中的搜索部分(完全发布在下面),但我还不知道要更改什么,或者如何构建用于搜索的容器。
整个 docker-compose 文件现在的样子。
version: '3'
services:
search:
image: docker.elastic.co/elasticsearch/elasticsearch:6.3.1
environment:
- cluster.name=fusionauth
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=${ES_JAVA_OPTS}"
ports:
- 9200:9200
- 9300:9300
networks:
- search
restart: unless-stopped
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- es_data:/usr/share/elasticsearch/data
fusionauth:
image: fusionauth/fusionauth-app:latest
depends_on:
- search
environment:
DATABASE_URL: jdbc:postgresql://mypostgre-rds-endpoint:5432/fusionauth
DATABASE_ROOT_USER: root_user_account
DATABASE_ROOT_PASSWORD: root_user_password
DATABASE_USER: fusionauth
DATABASE_PASSWORD: fusionauth_user_password
FUSIONAUTH_MEMORY: ${FUSIONAUTH_MEMORY}
FUSIONAUTH_SEARCH_SERVERS: http://search:9200
FUSIONAUTH_URL: http://load-balancer-url:9011
networks:
- db
- search
restart: unless-stopped
ports:
- 9011:9011
volumes:
- fa_config:/usr/local/fusionauth/config
networks:
db:
driver: bridge
search:
driver: bridge
volumes:
db_data:
es_data:
fa_config: