我尝试用docker和docker-composite构建和运行django应用程序。docker-compose build example_app
和docker-compose run example_app
运行时没有错误,但当我转到http://127.0.0.1:8000/
时,页面没有打开,我只是在浏览器中得到“页面不可用”的错误。
停靠文件
FROM python:3.9-buster
RUN mkdir app
WORKDIR /app
COPY ./requirements.txt /app/requirements.txt
COPY ./requirements_dev.txt /app/requirements_dev.txt
RUN pip install --upgrade pip
RUN pip install -r /app/requirements.txt
docker-compose.yml
version: '3'
services:
example_app:
image: example_app
build:
context: ../
dockerfile: ./docker/Dockerfile
command: bash -c "cd app_examples/drf_example && python manage.py runserver"
volumes:
- ..:/app
ports:
- 8000:8000
项目结构:
──app
──app_examples/drf_example/
────manage.py
────api
────drf_example
──requirements.txt
──requirements_dev.txt
──docker/
────docker-compose.yml
────Dockerfile
3条答案
按热度按时间u2nhd7ah1#
默认情况下,Django apps bind 到127.0.0.1意味着它们只接受来自本地机器的连接。在容器上下文中,本地机器是容器,所以你的应用不会接受来自容器外部的连接。
要让它接受来自任何地方的连接,可以将bind地址添加到
runserver
命令中。7bsow1i62#
在我的例子中,当使用docker compose
run
应用程序而不是docker composeup
时,我必须使用--service-ports
标志,如下所示:我的博客.yml:
我的./脚本/.env:
我的./脚本/start-development.sh:
相关文件
相关Docker compose git thread及更多信息
42fyovps3#
您需要在Docker文件中公开端口8000