【发布时间】:2020-01-01 05:45:00
【问题描述】:
我一直在尝试部署由 Django、Postgresql 和 Nginx 组成的 docker。当我这样做时它工作正常
sudo docker-compose up但是在 AWS EB 上部署它时,它给了我
无法将主机名“db”转换为地址:名称或服务未知
我所做的是使用
将我的 docker 推送到 docker hubsudo docker build -t myname/dockername -f Dockerfile .我只是做
eb deploy
文件结构
myproject
myproject
settings.py
urls.py
...
Dockerfile
Dockerrun.aws.json
manage.py
requirements.txt
...
Dockerfile
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/
EXPOSE 8000
CMD ["sh", "on-container-start.sh"]
Dockerrun.aws.json
{
"AWSEBDockerrunVersion": "1",
"Image": {
"Name": "myname/dockername:latest",
"Update": "true"
},
"Ports": [
{
"ContainerPort": "8000"
}
]
}
docker-compose.yml
version: '3'
services:
db:
image: postgres
hostname: db
networks:
- some_network
web:
restart: always
build: .
volumes:
- .:/code
hostname: web
expose:
- "8000"
depends_on:
- db
links:
- db:db
networks:
- some_network
nginx:
image: nginx
hostname: nginx
ports:
- "8000:8000"
volumes:
- ./config/nginx:/etc/nginx/conf.d
depends_on:
- web
networks:
- some_network
networks:
some_network:
我意识到,当我在我的机器上使用 docker-compose up 时,我运行了 3 个不同的容器。但是在 EB 上,我只看到一个容器在运行。
我认为这是因为我正在从使用这些文件构建的 docker hub 获取图像,并且不知何故导致这 3 个容器合二为一,并且它在识别主机名时搞砸了?我还不确定。帮助将不胜感激。谢谢!
【问题讨论】:
-
你在这两种情况下都使用相同的 docker-compose 文件吗?
标签: django amazon-web-services docker docker-compose amazon-elastic-beanstalk