强制 EBS 尊重 Dockerrun.aws.json 公开的端口



长话短说。我正在努力在 EBS 中设置单个实例Rabbitmq。在本地,一切都按预期工作,我能够通过 5672 端口连接到 RabbitMQ。当我将映像部署到 EBS 时,似乎 Dockerrun.aws.json 的第一个端口自动绑定到端口 80,因此可以通过此端口访问amqp

是否有任何黑客可以应用于将 ec5672 主机的端口 5672 正确绑定到 5672

Dockerfile

FROM rabbitmq:3.7.7-management-alpine
ADD rabbitmq.config /etc/rabbitmq/
ADD definitions.json /etc/rabbitmq/
EXPOSE 5672
EXPOSE 15672
CMD ["rabbitmq-server"]

Dockerrun.aws.json

{
    "AWSEBDockerrunVersion": "1",
    "Image": {
        "Name": "some-image-name",
        "Update": "true"
    },
    "Ports": [{
            "HostPort": "5672",
            "ContainerPort": "5672"
        },
        {
            "HostPort": "15672",
            "ContainerPort": "15672"
        }
    ],
    "Volumes": []
}
黑客很容易

。只需将随机端口公开为第一个条目即可。现在,其他端口已正确映射。

{
    "AWSEBDockerrunVersion": "1",
    "Image": {
        "Name": "some-image",
        "Update": "true"
    },
    "Ports": [{
            "HostPort": "80",
            "ContainerPort": "80"
        },
        {
            "HostPort": "5672",
            "ContainerPort": "5672"
        },
        {
            "HostPort": "15672",
            "ContainerPort": "15672"
        }
    ],
    "Volumes": []
}

最新更新