【发布时间】:2020-04-18 16:34:44
【问题描述】:
最近我一直在尝试将 knexjs 与 docker 一起使用,但遇到了奇怪的错误。当我使用以下命令在容器内运行 knex migrate:latest 时: docker exec service sh -c "knex migrate:latest";一切正常,但实际上并未在数据库中创建表。
我的迁移:
exports.up = knex => {
return Promise.all([
knex.schema.createTable('users', table => {
table.increments('id').primary();
table.string('name').notNullable();
table.string('username').unique().notNullable();
table.string('email').unique().notNullable();
table.string('password').notNullable();
table.datetime('created_at').notNullable();
}),
knex.schema.createTable('user_settings', table => {
table.integer('user_id');
table.integer('xp');
}),
])
}
exports.down = knex => {
return Promise.all([
knex.schema.dropTable('users'),
knex.schema.dropTable('user_settings'),
])
}
我的 Knex 文件
module.exports = {
client: 'pg',
debug:true,
connection: {
host:'postgres',
user: 'postgres',
password: 'postgres',
port: '',
database: 'users'
},
migrations: {
tableName: 'knex_migrations'
}
};
我的 docker-compose
version: '3'
services:
postgres:
image: postgres
environment:
POSTGRES_PASSWORD: postgres
POSTGRES_USER: postgres
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 5s
timeout: 5s
retries: 10
volumes:
- ./postgres:/app
ports:
- "5432:5432"
users:
container_name: users-service
restart: always
build: ./users
depends_on:
- postgres
volumes:
- ./users:/app
ports:
- '3000:3000'
我可以看到序列knex_migrations_id_seq、knex_migrations_lock_index_seq和users_id_seq已经被创建了。
【问题讨论】:
标签: node.js docker docker-compose migration knex.js