docker-compose запускается на ECS

Я пытался настроить Redash для работы на ECS. Я довольно новичок в ECS и Docker в целом, поэтому я не уверен, что мне не хватает чего-то фундаментального в том, что я сделал до сих пор.

Пока что я преобразовал docker-compose файл Redash в определение контейнера AWS.

Однако, согласно документации Redash, мне нужно запустить docker-compose run --rm server create_db сначала настроить таблицы в контейнере Postgres.

Как мне это реализовать docker-compose run поведение в контексте ECS?

Я заметил, что пытаясь заставить это поведение, добавив setup-postgres определение контейнера для моего контейнера работает, но это взломать и не идеально.

[
  {
    "name": "postgres-setup",
    "image": "redash/redash:latest",
    "cpu": 100,
    "memory": 150,
    "links": [
      "postgres",
      "redis"
    ],
    "command": [
        "create_db"
    ],
    "environment": [
      {
        "name": "PYTHONUNBUFFERED",
        "value": "0"
      },
      {
        "name": "REDASH_LOG_LEVEL",
        "value": "INFO"
      },
      {
        "name": "REDASH_REDIS_URL",
        "value": "redis://redis:6379/0"
      },
      {
        "name": "REDASH_DATABASE_URL",
        "value": "postgresql://postgres@postgres/postgres"
      },
      {
        "name": "REDASH_COOKIE_SECRET",
        "value": "veryverysecret"
      },
      {
        "name": "REDASH_WEB_WORKERS",
        "value": "1"
      }
    ],
    "essential": false
  },
  {
    "name": "nginx",
    "image": "redash/nginx:latest",
    "essential": false,
    "cpu": 100,
    "memory": 200,
    "links": [
      "server:redash"
    ],
    "portMappings": [
      {
        "containerPort": 80,
        "hostPort": 80
      }
    ]
  },
  {
    "name": "postgres",
    "image": "postgres:9.5.6-alpine",
    "essential": true,
    "cpu": 100,
    "memory": 300,
    "mountPoints": [
      {
        "sourceVolume": "mytestvol",
        "containerPath": "/var/lib/postgresql/data"
      }
    ]
  },
  {
    "name": "redis",
    "image": "redis:3.0-alpine",
    "essential": true,
    "cpu": 100,
    "memory": 400
  },
  {
    "name": "server",
    "image": "redash/redash:latest",
    "cpu": 100,
    "memory": 400,
    "links": [
      "postgres",
      "redis"
    ],
    "command": [
        "server"
    ],
    "environment": [
      {
        "name": "PYTHONUNBUFFERED",
        "value": "0"
      },
      {
        "name": "REDASH_LOG_LEVEL",
        "value": "INFO"
      },
      {
        "name": "REDASH_REDIS_URL",
        "value": "redis://redis:6379/0"
      },
      {
        "name": "REDASH_DATABASE_URL",
        "value": "postgresql://postgres@postgres/postgres"
      },
      {
        "name": "REDASH_COOKIE_SECRET",
        "value": "veryverysecret"
      },
      {
        "name": "REDASH_WEB_WORKERS",
        "value": "1"
      }
    ],
    "essential": false,
    "portMappings": [
      {
        "containerPort": 5000,
        "hostPort": 5000
      }
    ]
  },
  {
    "name": "worker",
    "image": "redash/redash:latest",
    "cpu": 100,
    "memory": 400,
    "links": [
      "postgres",
      "redis"
    ],
    "command": [
      "scheduler"
    ],
    "environment": [
      {
        "name": "PYTHONUNBUFFERED",
        "value": "0"
      },
      {
        "name": "REDASH_LOG_LEVEL",
        "value": "INFO"
      },
      {
        "name": "REDASH_REDIS_URL",
        "value": "redis://redis:6379/0"
      },
      {
        "name": "REDASH_DATABASE_URL",
        "value": "postgresql://postgres@postgres/postgres"
      },
      {
        "name": "QUEUES",
        "value": "queries,scheduled_queries,celery"
      },
      {
        "name": "WORKERS_COUNT",
        "value": "1"
      }
    ],
    "essential": false
  }
]

Я знаю, что запуск Postgres в таком контейнере не идеален, и может позже перенести его в RDS. Если я решу это сделать, как будет выглядеть этап инициализации базы данных? Создайте экземпляр ECS, загрузите docker-compose.yml файл и запустить docker-compose run --rm server create_db выполнить однократную настройку перед запуском службы ECS?

1 ответ

Вы не

Вы смотрите на эти несколько неправильных путей здесь:

1) Docker Compose - это инструмент разработки, а не производства. Вы можете использовать файл compose в Production, но он будет использоваться через Docker Swarm, и некоторые функции предназначены только для docker-compose, а другие - только для Docker Swarm.

2) С учетом вышесказанного - ECS - это оркестратор, и это то, чем является Docker Swarm (а это именно то, что вам нужно) - так что запуск Docker Swarm в то время как на ECS совершенно спорен.

Здесь вы хотите создать определение задачи ECS; по сути это ECS-версия составного файла. Вы устанавливаете образ, привязки портов, тома, ссылки на контейнеры и т. Д.

Таким образом, вы можете выбрать, хотите ли вы работать в ECS или настроить Docker Swarm.

Удачи!

Другие вопросы по тегам