Unable to get Postgres connections working
jannepeltola opened this issue · 0 comments
jannepeltola commented
Hello,
I've been trying to get an instance set up for a while and I'm pretty much stumped. The basic idea was to spin up a Postgres DB and a separate Docker image for the Repo, like this:
docker-compose.yml
:
version: '3'
services:
repo:
build: .
ports:
- "7000:7000"
environment:
REPO: postgresql://postgres:test@db/knowledge_repo:knowledge_repo
DBURI: postgresql://postgres:test@db/knowledge_repo_app
PGPASSWORD: test
db:
image: postgres
restart: always
ports:
- "5432:5432"
environment:
POSTGRES_PASSWORD: test
Dockerfile
:
FROM python:3.8
# Install Knowledge Repo
COPY requirements.txt .
RUN pip install -r requirements.txt
# Install mysql-client for setup
RUN apt-get update
RUN apt-get install -y postgresql-client
# Move configs over
WORKDIR /work
COPY files/config.py config.py
# Start application
COPY start.sh /start.sh
ENTRYPOINT ["/start.sh"]
start.sh
:
#!/bin/bash
sleep 5
echo "SELECT 'CREATE DATABASE knowledge_repo' WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'mydb')\gexec" | psql -h db -U postgres
echo "SELECT 'CREATE DATABASE knowledge_repo_app' WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'mydb')\gexec" | psql -h db -U postgres
knowledge_repo --repo $REPO init
knowledge_repo --repo $REPO db_upgrade --dburi $DBURI
knowledge_repo --repo $REPO runserver --dburi $DBURI --config config.py
#knowledge_repo --repo $REPO deploy --config config.py --dburi $DBURI
The app starts fine, and I'm able to see the web UI. However, when I try to init a repo, I get this:
$ docker exec -it knowledgerepo_repo_1 knowledge_repo --repo postgresql://postgres:test@db/knowledge_repo:knowledge_repo init
Traceback (most recent call last):
File "/usr/local/bin/knowledge_repo", line 247, in <module>
repo = knowledge_repo.KnowledgeRepository.create_for_uri(args.repo)
File "/usr/local/lib/python3.8/site-packages/knowledge_repo/repository.py", line 70, in create_for_uri
return cls._get_subclass_for(scheme).create(uri, **kwargs)
File "/usr/local/lib/python3.8/site-packages/knowledge_repo/repository.py", line 74, in create
raise NotImplementedError
NotImplementedError
This is not a configuration issue, since I'm able to run this Python script successfully:
import sqlalchemy as sa
engine = sa.create_engine('postgresql://postgres:test@db/knowledge_repo')
conn = engine.connect()
res = conn.execute("SELECT * FROM pg_catalog.pg_tables")
for row in res:
print(row)
conn.close()
->
$ docker exec -it knowledgerepo_repo_1 python test.py
('public', 'knowledge_repo', 'postgres', None, True, False, False, False)
[...]
So, what am I doing wrong?