Necesito ejecutar un contenedor docker en AWS ECS. NO tengo acceso al código fuente de la imagen. Esta es una imagen privada, de un repositorio privado que cargué en AWS ECR. Creé una definición de tarea de AWS ECS para ejecutar el contenedor dentro de un servicio, dentro de un clúster. La imagen muestra que está en funcionamiento, pero no puedo acceder a ella a través de mi navegador. Sé que todas las configuraciones de red son correctas porque puedo usar una aplicación simple de hello world que también implementé para probar.
También hay un comando que necesito ejecutar antes: docker run --env-file <environment_variables_file> <image>:<tag> rake db:reset && rake db:seed .
De acuerdo con las instrucciones para esta imagen acoplable, el comando de ejecución es: docker run -d --name <my_image_name> --env-file <environment_variables_file> -p 8080:80 <image>:<tag> .
Puedo ejecutar esta imagen localmente en mi computadora portátil sin problemas, implementarla en AWS es ese problema. Mi pregunta es ¿cómo proporciono el archivo de variables environment_variables_file a la imagen? ¿Dónde subo el archivo y cómo lo paso? ¿Cómo ejecuto el comando para iniciar la base de datos antes de que se ejecute la imagen?
Desde noviembre de 2020, ECS admite archivos env ( publicación de blog ), pero deben estar alojados en S3:
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/taskdef-envfiles.html
Pegar lo esencial como referencia. Bajo la definición de contenedor:
"environmentFiles": [ { "value": "arn:aws:s3:::s3_bucket_name/envfile_object_name.env", "type": "s3" } ]El rol de ejecución de tareas también necesita el siguiente permiso:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::s3_bucket_name/envfile_object_name.env" ] }, { "Effect": "Allow", "Action": [ "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::s3_bucket_name" ] } ] }Amazon ECS no admite archivos de variables de entorno. Puede establecer variables de entorno dentro de la definición de tareas. Por ejemplo:
"environment" : [ { "name" : "string", "value" : "string" }, { "name" : "string", "value" : "string" } ]Lea las siguientes instrucciones para obtener más detalles.
Actualizar:
AWS ahora proporciona una forma:
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/taskdef-envfiles.html