我一直在尝试设置Redash在ECS上运行。一般来说,我对ecs和docker比较陌生,所以我不确定我是否遗漏了一些基本的东西。
到目前为止,我已经转变了
Redash's docker-compose file
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创建数据库
要在启动ECS服务之前进行一次性设置吗?