我正在尝试使用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。
可能是我使用的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"
有什么想法吗?