How to translate docker-compose.yml to Dockerrun.aws.json for Django

前端 未结 2 1769
没有蜡笔的小新
没有蜡笔的小新 2020-12-29 04:46

I am following the instructions at https://docs.docker.com/compose/django/ to get a basic dockerized django app going. I am able to run it locally without a problem but I am

相关标签:
2条回答
  • 2020-12-29 05:23

    You have a few issues.

    1) 'web' doesn't appear to be an 'image', you define it as 'build . ' in your docker-compose.. Remember, the Dockerrun.aws.json will have to pull the image from somewhere (easiest is to use ECS's Repositories)

    2) I think 'command' is an array. So you'd have:

    "command": ["python" "manage.py" "runserver" "0.0.0.0:8000"]
    

    3) your mountPoints are correct, but the volume definition at the top is wrong. { "name": "web", "host": { "sourcePath": "/var/app/current/db" } Im not 100% certain, but the path works for me. if you have the Dockerrun.aws.json file, next to is a directory called /db .. then that will be the mount location.

    0 讨论(0)
  • 2020-12-29 05:30

    I was struggling to get the ins and outs of the Dockerrun format. Check out Container Transform: "Transforms docker-compose, ECS, and Marathon configurations"... it's a life-saver. Here is what it outputs for your example:

    {
        "containerDefinitions": [
            {
                "essential": true,
                "image": "postgres",
                "name": "db"
            },
            {
                "command": [
                    "python",
                    "manage.py",
                    "runserver",
                    "0.0.0.0:8000"
                ],
                "essential": true,
                "mountPoints": [
                    {
                        "containerPath": "/code",
                        "sourceVolume": "_"
                    }
                ],
                "name": "web",
                "portMappings": [
                    {
                        "containerPort": 8000,
                        "hostPort": 8000
                    }
                ]
            }
        ],
        "family": "",
        "volumes": [
            {
                "host": {
                    "sourcePath": "."
                },
                "name": "_"
            }
        ]
    }
    Container web is missing required parameter "image".
    Container web is missing required parameter "memory".
    Container db is missing required parameter "memory".
    

    That is, in this new format, you must tell it how much memory to allot each container. Also, you need to provide an image - there is no option to build. As is mentioned in the comments, you want to build and push to DockerHub or ECR, then give it that location: eg [org name]/[repo]:latest on Dockerhub, or the URL for ECR. But container-transform does the mountPoints and volumes for you - it's amazing.

    0 讨论(0)
提交回复
热议问题