在 AWS ECS/Fargate 中为 运行 创建应用程序和搜索容器

Creating app and search containers to run in AWS ECS/Fargate

在我们的情况下,我们希望 运行 应用程序容器和搜索容器作为 ECS 集群上的独立服务。

我需要在 ECS/Fargate 下为 运行 创建一个搜索容器并链接到负载均衡器。

我需要创建一个应用程序容器,它能够与我们的 PostgreSQL RDS 实例对话,它已经设置了 fusionauth 表,并通过负载均衡器与搜索容器对话。

我从 docker-compose.yaml 开始并删除了数据库服务。我将 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 专家。但是我找不到任何具体的文档来帮助我弄清楚如何配置和部署搜索和应用程序容器。

任何指向现有文档的指针,或帮助得到这个运行宁。

我知道我必须更改 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:

AFAICT 如果数据库已经设置

,您没有理由使用 DATABASE_ROOT_USER 和 DATABASE_USER

我建议您可以先删除它,但除此之外它看起来与我已经使用了一段时间的 docker-compose 设置非常相似

我要补充的唯一一件事是这个问题与 ECS 或 Fargate 根本无关,它实际上只是一个 docker 撰写文件,你在获取 运行据我所知