I'm trying to create a database and connect to it within my container network. I don't want to have to ssh into a box to create users/databases etc, as this is not a scalable or easily distributable process.
This is what I have so far:
# docker-compose.yml db: image: postgres:9.4 volumes: - ./db/init.sql:/docker-entrypoint-initdb/10-init.sql environment: - PGDATA=/tmp - PGDATABASE=web - PGUSER=docker - PGPASSWORD=password
This is my
CREATE DATABASE web; CREATE USER docker WITH PASSWORD 'password'; GRANT ALL PRIVILEGES ON DATABASE web TO docker;
When I start up the container and try to connect to it, I get this error:
db_1 | FATAL: role "docker" does not exist db_1 | done db_1 | server started db_1 | FATAL: database "web" does not exist db_1 | psql: FATAL: database "web" does not exist
The first time this happened, I tried to create a role like this:
CREATE ROLE docker with SUPERUSER PASSWORD password; GRANT web TO docker;
But it did not have any effect. To make matters even more confusing, when I use
node-postgres to connect to the db, I get this error:
Error: connect ECONNREFUSED
But how can the connection be refused if the db service isnt even up??
In a nutshell, these are the questions I'm trying to solve:
- How can I create a database using only the files in my project (i.e. no manual commands)?
- How do I create a user/role using only the files in my project?
- How do I connect to this database?
Thank you in advance.