【发布时间】:2021-03-19 18:18:06
【问题描述】:
我正在尝试使用 docker-compose 创建两个表,并使用 postgres sql 创建一个 dockerfile。但是,我收到以下错误。
psql:/docker-entrypoint-initdb.d/tables/users.sql:11: ERROR: syntax error at or near "CREATE" postgres_1 | LINE 2: CREATE TABLE users
我不确定我做错了什么,但我通过eversql.com/sql-syntax-check-validator/检查了我的sql查询,它似乎是有效的sql。
可能是我正在使用的 postgres 图像的版本还是其他版本?我的 dockerfiles 对我来说看起来是正确的,但如果我遗漏了什么,请告诉我。
这是我的Dockerfile
FROM postgres:latest
ADD /tables/ /docker-entrypoint-initdb.d/tables/
ADD /deploy_schemas.sql/ /docker-entrypoint-initdb.d/
这是我的deploy_schemas.sql
-- Deploy login and users tables
\i '/docker-entrypoint-initdb.d/tables/users.sql'
\i '/docker-entrypoint-initdb.d/tables/login.sql'
这是我的users.sql
BEGIN TRANSACTION
CREATE TABLE users (
id serial PRIMARY KEY,
name VARCHAR(100),
email text UNIQUE NOT NULL,
entries BIGINT DEFAULT 0,
joined TIMESTAMP NOT NULL
);
COMMIT;
这是我的login.sql
BEGIN TRANSACTION
CREATE TABLE login (
id serial PRIMARY KEY,
hash VARCHAR(100) NOT NULL,
email text UNIQUE NOT NULL,
);
COMMIT;
最后是docker-compose.yml
version: "3.8"
services:
#Backend API
smart-brain-api:
container_name: backend
build: ./
command: npm start
working_dir: /usr/src/test-api
environment:
POSTGRES_URI: postgres://admin:password@postgres:5432/test-api
links:
- postgres
ports:
- "3000:3000"
volumes:
- ./:/usr/src/test-api
#Postgres
postgres:
environment:
POSTGRES_USER: admin
POSTGRES_DB: docker-test-api
POSTGRES_HOST: postgres
POSTGRES_PASSWORD: password
build: ./postgres
ports:
- "5432:5432"
有什么想法吗?
【问题讨论】:
标签: postgresql docker docker-compose create-table