首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >docker中的GeoDjango和postgis设置

docker中的GeoDjango和postgis设置
EN

Stack Overflow用户
提问于 2020-02-26 05:54:04
回答 3查看 1.8K关注 0票数 5

我正在尝试创建一个docker设置,这样我就可以轻松地构建和部署一个geodjango应用程序(带有postgis后端)。我有以下文件夹结构:

代码语言:javascript
复制
|-- Dockerfile
|-- Pipfile
|-- Pipfile.lock
|-- README.md
|-- app
|   |-- manage.py
|   |-- app
|   `-- app_web

在我设置Django的Dockerfile中,我有以下内容:

代码语言:javascript
复制
# Pull base image
FROM python:3.7

# Set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

# install dependencies
RUN pip install pipenv
COPY . /code
WORKDIR /code/
RUN pipenv install --system

# Setup GDAL
RUN apt-get update &&\
    apt-get install -y binutils libproj-dev gdal-bin python-gdal python3-gdal

# set work directory
WORKDIR /code/app
CMD ["python", "manage.py", "migrate", "--no-input"]

在我的docker-compose.yml文件中:

代码语言:javascript
复制
version: '3.7'

services:
    postgis:
        image: kartoza/postgis:12.1
        volumes:
            - postgres_data:/var/lib/postgresql/data/
    web:
        build: .
        command: python /code/app/manage.py runserver 0.0.0.0:8000
        ports:
            - 8000:8000
        volumes:
            - .:/code
        depends_on:
            - postgis
volumes:
    postgres_data:

最后在settings.py中:

代码语言:javascript
复制
DATABASES = {
    'default': {
         'ENGINE': 'django.contrib.gis.db.backends.postgis',
         'NAME': 'postgres',
         'USER': 'postgres',
         'HOST': 'postgis',
    },
}

现在,当我:运行docker-compose up --build时,一切似乎都正常了(数据库和django应用程序都启动了它们的容器)。但每当我尝试实际使用数据库时(应用程序现在是空白的,所以我仍然需要迁移),django似乎无法识别数据库。

谁能告诉我哪里出了问题?

EN

回答 3

Stack Overflow用户

发布于 2020-05-23 14:59:22

django run docker-compose up --构建一切似乎都正常(数据库和

应用程序都启动了它们的容器)

一定要检查日志,因为容器在发现错误后不一定会停止。

代码语言:javascript
复制
docker-compose logs

此外,您已经在Dockerfile中设置了工作目录

代码语言:javascript
复制
WORKDIR /code/app

因此,看看您在docker-compose.yml中执行的命令

代码语言:javascript
复制
command: python /code/app/manage.py runserver 0.0.0.0:8000
票数 1
EN

Stack Overflow用户

发布于 2021-10-11 17:21:15

你安装应用程序了吗?

代码语言:javascript
复制
INSTALLED_APPS = [
    # [...]
    'django.contrib.gis'
]
票数 0
EN

Stack Overflow用户

发布于 2022-02-15 22:08:07

在settings.py中,需要指定PASSWORD

代码语言:javascript
复制
DATABASES = {
    'default': {
         'ENGINE': 'django.contrib.gis.db.backends.postgis',
         'NAME': 'postgres',
         'USER': 'postgres',
         'PASSWORD': 'postgres',
         'HOST': 'postgis',
    },
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60403731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档