我的Dockerrun.aws.json看起来像这样:
{
"AWSEBDockerrunVersion": 2,
"volumes": [
{
"name": "docker-socket",
"host": {
"sourcePath": "/var/run/docker.sock"
}
}
],
"containerDefinitions": [
{
"name": "nginx",
"image": "nginx",
"environment": [
{
"name": "VIRTUAL_HOST",
"value": "demo.local"
}
],
"essential": true,
"memory": 128
},
{
"name": "nginx-proxy",
"image": "jwilder/nginx-proxy",
"essential": true,
"memory": 128,
"portMappings": [
{
"hostPort": 80,
"containerPort": 80
}
],
"mountPoints": [
{
"sourceVolume": "docker-socket",
"containerPath": "/tmp/docker.sock",
"readOnly": true
}
]
}
]
}
使用“eb local run”在本地运行会导致:
错误:你需要与一个卷共享你的Docker主机套接字 /tmp/docker.sock通常你应该运行你的jwilder / nginx-proxy with:
上的文档-v /var/run/docker.sock:/tmp/docker.sock:ro
见 http://git.io/vZaGJ
如果我进入我的docker机器并运行:
docker run -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock jwilder / nginx的代理
它创建容器并正确安装卷。
为什么上面的Dockerrun.aws.json配置没有正确挂载/var/run/docker.sock:/tmp/docker.sock卷?
如果我从docker-compose.yml运行相同的配置,它在本地工作正常。但是,我想使用Dockerrun.aws.json将相同的配置部署到Elastic Beanstalk:
version: '2'
services:
nginx:
image: nginx
container_name: nginx
cpu_shares: 100
volumes:
- /var/www/html
environment:
- VIRTUAL_HOST=demo.local
nginx-proxy:
image: jwilder/nginx-proxy
container_name: nginx-proxy
cpu_shares: 100
ports:
- "80:80"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
我的本地设置正在使用:
答案 0 :(得分:1)
您的Dockerrun.aws.json文件在我的AWS EB中运行正常(仅稍微更改它以使用我们自己的容器/主机名代替'nginx'容器)。这可能只是“eb本地运行”设置的一个问题吗?
正如你所说的在Mac上,尝试升级到在osx上本机运行docker的新docker 1.12,或者至少是更新版本的docker-machine - https://docs.docker.com/machine/install-machine/#/installing-machine-directly