【发布时间】:2017-12-09 12:18:58
【问题描述】:
我想用我的 Django 项目在 docker 中创建 postgresql 数据库。我正在尝试使用init.sql 文件来执行此操作,但它不起作用:
settings.py:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'aso',
'USER': 'postgres',
'HOST': 'db',
'PORT': 5432,
}
}
init.sql:
CREATE USER postgres;
CREATE DATABASE aso;
GRANT ALL PRIVILEGES ON DATABASE aso TO postgres;
我更新的Dockerfile:
FROM python:3.6.1
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip3 install -r requirements.txt
ADD . /code/
FROM library/postgres
ADD init.sql /docker-entrypoint-initdb.d/
不幸的是我得到了:
db_1 | LOG: database system was shut down at 2017-07-05 14:02:41 UTC
web_1 | /usr/local/bin/docker-entrypoint.sh: line 145: exec: python3: not found
db_1 | LOG: MultiXact member wraparound protections are now enabled
db_1 | LOG: autovacuum launcher started
db_1 | LOG: database system is ready to accept connections
dockerpri_web_1 exited with code 127
我也在尝试这个Dockerfile:
FROM python:3.6.1
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip3 install -r requirements.txt
ADD . /code/
FROM library/postgres
ENV POSTGRES_USER docker
ENV POSTGRES_PASSWORD docker
ENV POSTGRES_DB aso
我的docker-compose.yml:
version: '3'
services:
db:
image: postgres
web:
build: .
command: python3 PROJECT/backend/project/manage.py runserver 0.0.0.0:8001
volumes:
- .:/code
ports:
- "8001:8001"
depends_on:
- db
【问题讨论】:
-
official docs 似乎指向不同的 Dockerfile。您是否尝试过使用它?
-
我不确定你的意思是我在帖子中添加的内容?
-
我想您可能对
Dockerfile如何处理多个FROM指令感到困惑。您也可以发布您的docker-compose.yml吗?你目前正在做的事情是不可能的,但我可以提供一个建议。 -
我将不胜感激。我已经更新了帖子。
标签: python django postgresql python-3.x docker