【问题标题】:Creating app and search containers to run in AWS ECS/Fargate创建应用程序和搜索容器以在 AWS ECS/Fargate 中运行
【发布时间】:2019-11-26 16:11:57
【问题描述】:

在我们的情况下,我们希望在 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 专家。但是我找不到任何特定的文档来帮助我弄清楚如何配置和部署搜索和应用程序容器。

感谢任何指向现有文档的指针或帮助以使其运行。

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

【问题讨论】:

    标签: docker aws-fargate fusionauth


    【解决方案1】:

    AFAICT 如果数据库已经设置,你没有理由使用 DATABASE_ROOT_USER 和 DATABASE_USER

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

    我要补充的唯一另一件事是,这个问题与 ECS 或 Fargate 完全无关,它实际上只是一个 docker compose 文件,据我所知,您在运行时遇到了麻烦

    【讨论】:

      猜你喜欢
      • 2021-01-24
      • 1970-01-01
      • 2018-07-08
      • 2019-10-29
      • 2019-01-05
      • 2022-08-06
      • 2020-09-05
      • 2019-09-25
      • 1970-01-01
      相关资源
      最近更新 更多