【发布时间】:2017-08-15 06:05:36
【问题描述】:
我正在关注这篇文章来运行 SQL 脚本来创建默认表。
这是我的 docker compose 文件
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
似乎在创建表后数据库已关闭。我认为这是 Postgres Docker 的标准流程,但是当我登录 Postgres 时,我看不到我应该在那里的表。
我通过
登录docker exec -it $(my postgres container id) sh
#su - postgres
#psql
# \d => No relations found.
我不确定这是否是为 Postgres 创建默认数据的正确方法。
【问题讨论】:
-
你的脚本被执行了,查看官方图像文档我找到了 POSTGRES_DB 参数,也许你需要设置这个。在 docker-compose 和 dockerfile 上查看您的配置,我看不出有什么问题。
标签: node.js postgresql docker docker-compose