我正在关注此帖子以运行SQL脚本来创建默认表。
这是我的docker撰写文件
version: "3"
services:
web:
build: .
volumes:
- ./:/usr/src/app/
- /usr/src/app/node_modules
ports:
- “3000:3000”
depends_on:
- postgres
postgres:
container_name: postgres
build:
context: .
dockerfile: pgDockerfile
environment:
POSTGRES_PASSWORD: test
POSTGRES_USER: test
ports:
- 5432:5432
这是我的pgDockerfile
FROM postgres:9.6-alpine
# copy init sql
ADD 00-initial.sql /docker-entrypoint-initdb.d/
这是我的sql脚本
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
CREATE TABLE IF NOT EXISTS test (
id text NOT NULL,
title varchar(200) NOT NULL
);
我可以构建并运行docker-compose up
,我看到以下消息:
postgres | CREATE DATABASE
postgres |
postgres | CREATE ROLE
postgres |
postgres |
postgres | /usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/00-initial-data.sql
postgres | CREATE EXTENSION
postgres | CREATE TABLE
postgres |
postgres |
postgres | LOG: received fast shutdown request
postgres | LOG: aborting any active transactions
postgres | waiting for server to shut down....LOG: autovacuum launcher shutting down
postgres | LOG: shutting down
postgres | LOG: database system is shut down
postgres | done
postgres | server stopped
postgres |
postgres | PostgreSQL init process complete; ready for start up.
postgres |
postgres | LOG: database system was shut down at 2017-03-22 21:36:16 UTC
postgres | LOG: MultiXact member wraparound protections are now enabled
postgres | LOG: database system is ready to accept connections
postgres | LOG: autovacuum launcher started
在创建表之后,似乎关闭了db。我认为这是Postgres Docker的标准流程,但是当我登录Postgres时,我看不到我的桌子应该在那里。
我通过
登录docker exec -it $(my postgres container id) sh
#su - postgres
#psql
# \d => No relations found.
我不确定这是否是为Postgres创建默认数据的正确方法。
答案 0 :(得分:0)
我认为您的泊坞窗可以按预期工作,但是并没有完全按照您的想法进行。设置POSTGRES_USER
而不设置POSTGRES_DB
时,系统将默认使用用户名作为数据库名,因此您的表位于test
数据库中!
使用\l
列出数据库将显示数据库,然后您可以使用\c test
连接到数据库。建立连接后,\d
将列出您的关系!