1

I want to translate my docker-compose.yml to Dockerrun.aws.json. But I have several places where I don't know how to translate. Here are my files: docker-compose.yml:

version: '2'
services:
  api:
    ports:
      - '8000:8000'
    build:
      context: ./saleor
      dockerfile: ./Dockerfile
      args:
        STATIC_URL: /static/
    restart: unless-stopped
    networks:
      - saleor-backend-tier
    depends_on:
      - db
      - redis
      - jaeger
    volumes:
      - './saleor/saleor/:/app/saleor:Z'
      - './saleor/templates/:/app/templates:Z'
      - './saleor/tests/:/app/tests'
      - 'saleor-media:/app/media'
    command: 'python manage.py runserver 0.0.0.0:8000'
    env_file: common.env
    environment:
      - JAEGER_AGENT_HOST=jaeger
      - 'STOREFRONT_URL=http://localhost:3000/'
      - 'DASHBOARD_URL=http://localhost:9000/'
  db:
    image: 'library/postgres:11.1-alpine'
    ports:
      - '5432:5432'
    restart: unless-stopped
    networks:
      - saleor-backend-tier
    volumes:
      - 'saleor-db:/var/lib/postgresql'
    environment:
      - POSTGRES_USER=saleor
      - POSTGRES_PASSWORD=saleor
  redis:
    image: 'library/redis:5.0-alpine'
    ports:
      - '6379:6379'
    restart: unless-stopped
    networks:
      - saleor-backend-tier
    volumes:
      - 'saleor-redis:/data'
  worker:
    build:
      context: ./saleor
      dockerfile: ./Dockerfile
      args:
        STATIC_URL: /static/
    command: 'celery -A saleor worker --app=saleor.celeryconf:app --loglevel=info'
    restart: unless-stopped
    networks:
      - saleor-backend-tier
    env_file: common.env
    depends_on:
      - redis
    volumes:
      - './saleor/saleor/:/app/saleor:Z,cached'
      - './saleor/templates/:/app/templates:Z,cached'
      - 'saleor-media:/app/media'
  jaeger:
    image: jaegertracing/all-in-one
    ports:
      - '5775:5775/udp'
      - '6831:6831/udp'
      - '6832:6832/udp'
      - '5778:5778'
      - '16686:16686'
      - '14268:14268'
      - '9411:9411'
    restart: unless-stopped
    networks:
      - saleor-backend-tier
volumes:
  saleor-db:
    driver: local
  saleor-redis:
    driver: local
  saleor-media: null
networks:
  saleor-backend-tier:
    driver: bridge

Dockerrun.aws.json:

{
"AWSEBDockerrunVersion": 2,
"containerDefinitions": [
    {
        "command": ["python", "manage.py", "runserver", "0.0.0.0:8000"
        ],
        "environment": [
            {
                "name": "JAEGER_AGENT_HOST",
                "value": "jaeger"
            },
            {
                "name": "STOREFRONT_URL",
                "value": "http://localhost:3000/"
            },
            {
                "name": "DASHBOARD_URL",
                "value": "http://localhost:9000/"
            }
        ],
        "memory": 512,
        "image": "saleor-platform_api",
        "essential": true,
        "links": [
               "db",
               "redis",
               "jaeger"
            ],
        "mountPoints": [
            {
                "containerPath": "/app/tests",
                "sourceVolume": "_SaleorTests"
            },
            {
                "containerPath": "/app/media",
                "sourceVolume": "Saleor-Media"
            },
            {
                "containerPath": "/app/saleor",
                "sourceVolume": "_Saleor"
            },
            {
                "containerPath": "/app/templates",
                "sourceVolume": "Saleor-templates"
            }
        ],
        "name": "api",
        "portMappings": [
            {
                "containerPort": 8000,
                "hostPort": 8000
            }
        ]
    },
    {
        "environment": [
            {
                "name": "POSTGRES_USER",
                "value": "saleor"
            },
            {
                "name": "POSTGRES_PASSWORD",
                "value": "saleor"
            }
        ],
        "essential": true,
        "memory": 256,
        "image": "library/postgres:11.1-alpine",
        "mountPoints": [
            {
                "containerPath": "/var/lib/postgresql",
                "sourceVolume": "Saleor-Db"
            }
        ],
        "name": "db",
        "portMappings": [
            {
                "containerPort": 5432,
                "hostPort": 5432
            }
        ]
    },
    {
        "essential": true,
        "image": "jaegertracing/all-in-one",
        "name": "jaeger",
        "memory": 256,
        "portMappings": [
            {
                "containerPort": 5775,
                "hostPort": 5775,
                "protocol": "udp"
            },
            {
                "containerPort": 6831,
                "hostPort": 6831,
                "protocol": "udp"
            },
            {
                "containerPort": 6832,
                "hostPort": 6832,
                "protocol": "udp"
            },
            {
                "containerPort": 5778,
                "hostPort": 5778
            },
            {
                "containerPort": 16686,
                "hostPort": 16686
            },
            {
                "containerPort": 14268,
                "hostPort": 14268
            },
            {
                "containerPort": 9411,
                "hostPort": 9411
            }
        ]
    },
    {
        "essential": true,
        "image": "library/redis:5.0-alpine",
        "memory": 256,
        "mountPoints": [
            {
                "containerPath": "/data",
                "sourceVolume": "Saleor-Redis"
            }
        ],
        "name": "redis",
        "portMappings": [
            {
                "containerPort": 6379,
                "hostPort": 6379
            }
        ]
    }
],
"family": "",
"volumes": [

    {
        "host": {
            "sourcePath": "./saleor/saleor/"
        },
        "name": "_Saleor"
    },
    {
        "host": {
            "sourcePath": "./saleor/templates/"
        },
        "name": "Saleor-templates"
    },
    {
        "host": {
            "sourcePath": "./saleor/tests/"
        },
        "name": "_SaleorTests"
    },
    {
        "host": {
            "sourcePath": "saleor-media"
        },
        "name": "Saleor-Media"
    },
    {
        "host": {
            "sourcePath": "saleor-db"
        },
        "name": "Saleor-Db"
    },
    {
        "host": {
            "sourcePath": "saleor-redis"
        },
        "name": "Saleor-Redis"
    }


]

}

  1. I don't know how to translate "build:", so I manually build an image and imported the image in dockerrun.aws.json.
  2. I don't know how to translate "networks" in docker-compose.yml
  3. I don't know how to translate "env_file: common.env"
  4. I don't know how to translate "Z,cached" in the volumes tag
  5. I don't know how to translate the "depends_on" tag.
  6. I don't know how to translate "restart: unless-stopped"

Any help is really appreciated! Thanks

Jerry Zhang
  • 215
  • 1
  • 10
  • "networks" field in docker-compose.yml is possibly not useful according to this post: https://stackoverflow.com/questions/57684920/aws-elastic-beanstalk-gives-could-not-translate-host-name-db-to-address-erro I removed the "network" fields in my docker-compose.yml. It still works correctly. – Jerry Zhang Aug 25 '20 at 17:32
  • I saw it earlier, but I don't have complete solution. But I know that there is no `build` equivalent in `Dockerrun.aws.json`. Thus you would have to construct the image yourself and store it in ECR for instance, before you can use it. – Marcin Aug 25 '20 at 22:31
  • Thanks. I figured out some solutions. "depends_on" can be translated to "links". But I still don't know how to write shared volumes in Dockerrun.aws.json. The document is really lacking. – Jerry Zhang Aug 25 '20 at 22:37

0 Answers0