Je migre une partie de l'infrastructure de la société pour laquelle je travaille vers Amazon ECS et je suis bloqué pour essayer de connecter le conteneur de mon serveur au conteneur de la base de données.AWS ECS ne lie pas mes conteneurs
Voici comment je l'ai mis sur ma tâche:
{
"requiresAttributes": [
{
"value": null,
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.17",
"targetId": null,
"targetType": null
},
{
"value": null,
"name": "com.amazonaws.ecs.capability.logging-driver.syslog",
"targetId": null,
"targetType": null
},
{
"value": null,
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.18",
"targetId": null,
"targetType": null
},
{
"value": null,
"name": "com.amazonaws.ecs.capability.ecr-auth",
"targetId": null,
"targetType": null
}
],
"taskDefinitionArn": "arn:aws:ecs:us-east-1:9621234232917455:task-definition/ecv-server:12",
"networkMode": "bridge",
"status": "ACTIVE",
"revision": 12,
"taskRoleArn": null,
"containerDefinitions": [
{
"volumesFrom": [],
"memory": 500,
"extraHosts": null,
"dnsServers": [],
"disableNetworking": null,
"dnsSearchDomains": null,
"portMappings": [],
"hostname": "db",
"essential": true,
"entryPoint": null,
"mountPoints": [
{
"containerPath": "/var/lib/postgresql/data",
"sourceVolume": "dbdata",
"readOnly": null
}
],
"name": "db",
"ulimits": null,
"dockerSecurityOptions": null,
"environment": [
{
"name": "POSTGRES_PASSWORD",
"value": "jmbrito"
},
{
"name": "POSTGRES_USER",
"value": "jmbrito"
}
],
"links": [],
"workingDirectory": null,
"readonlyRootFilesystem": null,
"image": "postgres",
"command": null,
"user": null,
"dockerLabels": null,
"logConfiguration": {
"logDriver": "syslog",
"options": null
},
"cpu": 0,
"privileged": null,
"memoryReservation": null
},
{
"volumesFrom": [],
"memory": 400,
"extraHosts": null,
"dnsServers": [],
"disableNetworking": null,
"dnsSearchDomains": null,
"portMappings": [],
"hostname": "redis",
"essential": true,
"entryPoint": null,
"mountPoints": [
{
"containerPath": "/data",
"sourceVolume": "redisdata",
"readOnly": null
}
],
"name": "redis",
"ulimits": null,
"dockerSecurityOptions": null,
"environment": [],
"links": null,
"workingDirectory": null,
"readonlyRootFilesystem": null,
"image": "redis:3.2-alpine",
"command": [
"redis-server"
],
"user": null,
"dockerLabels": null,
"logConfiguration": {
"logDriver": "syslog",
"options": null
},
"cpu": 0,
"privileged": null,
"memoryReservation": null
},
{
"volumesFrom": [],
"memory": 600,
"extraHosts": null,
"dnsServers": null,
"disableNetworking": null,
"dnsSearchDomains": null,
"portMappings": [
{
"hostPort": 80,
"containerPort": 3000,
"protocol": "tcp"
}
],
"hostname": null,
"essential": true,
"entryPoint": [],
"mountPoints": [],
"name": "server",
"ulimits": null,
"dockerSecurityOptions": null,
"environment": [
{
"name": "RAILS_ENV",
"value": "production"
}
],
"links": [
"db:db",
"redis:redis"
],
"workingDirectory": "/usr/src/app",
"readonlyRootFilesystem": null,
"image": "MY DOCKER LINK IN ECR",
"command": [
"sh",
"deploy/init.sh"
],
"user": null,
"dockerLabels": null,
"logConfiguration": {
"logDriver": "syslog",
"options": null
},
"cpu": 0,
"privileged": null,
"memoryReservation": null
}
],
"placementConstraints": [],
"volumes": [
{
"host": {
"sourcePath": null
},
"name": "dbdata"
},
{
"host": {
"sourcePath": null
},
"name": "redisdata"
}
],
"family": "ecv-server"
}
Comme vous pouvez le voir je configurer correctement mon champ de liens et lorsque je tente de se connecter en utilisant le nom comme la connexion à la DB hôte ou les Redis hôtes il ne le trouve pas.
J'ai essayé d'utiliser les adresses VPC pour me connecter aux autres conteneurs et cela a fonctionné. Le seul problème est que pour le faire j'ai préféré me fixer les adresses dans le VPC (comme le réglage 172.13.0.2 comme db) parce que quand je ne l'ai pas défini, le système obtient l'adresse par ordre de connexion.
J'espère que vous avez compris la question.
Merci.