📅  最后修改于: 2023-12-03 14:43:40.275000             🧑  作者: Mango
在 Docker Compose 中使用 Knex 迁移允许我们在容器化的开发环境中方便地管理数据库的迁移和回滚。Knex 是一个流行的 Node.js SQL 查询构建器,可以与多种数据库引擎集成。
首先,确保你已经安装了 Node.js 和 Docker Compose。然后,你可以使用 npm 或者 yarn 来安装 Knex:
$ npm install knex --save
# 或者
$ yarn add knex
在你的项目根目录下创建一个名为 knexfile.js
的文件,并按照你的需要进行配置。例如,如果你要连接到一个 PostgreSQL 数据库,配置文件可能如下所示:
module.exports = {
development: {
client: 'pg',
connection: {
host: 'localhost',
port: 5432,
user: 'postgres',
password: 'password',
database: 'myapp'
},
migrations: {
directory: './migrations'
}
}
};
确保替换上述配置中的数据库连接信息以适应你的环境。
在项目根目录下创建一个名为 migrations
的文件夹,用来存放数据库迁移文件。每个迁移文件都应该包含对数据库进行更改的操作。
以下是一个简单的示例迁移文件 20220101000000_create_users_table.js
,用于创建一个名为 users
的表:
exports.up = function(knex) {
return knex.schema.createTable('users', function(table) {
table.increments('id');
table.string('name').notNullable();
table.string('email').notNullable().unique();
table.timestamps(false, true);
});
};
exports.down = function(knex) {
return knex.schema.dropTable('users');
};
接下来,创建一个名为 docker-compose.yml
的文件来定义运行容器的配置。下面是一个简单的示例,使用 Postgres 数据库作为后端和 Knex 数据库迁移:
version: '3'
services:
app:
build:
context: .
dockerfile: Dockerfile
depends_on:
- db
volumes:
- .:/app
command: npm start
db:
image: postgres
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: password
POSTGRES_DB: myapp
ports:
- "5432:5432"
volumes:
- ./data:/var/lib/postgresql/data
请注意,上述示例中的 Dockerfile
是用于构建你的 Node.js 应用程序的,可以根据你的项目进行适当的调整。
为了运行数据库迁移,你需要执行以下命令:
$ docker-compose run app knex migrate:latest
这将在 app
服务容器中运行数据库迁移,并将根据 knexfile.js
中的配置连接到数据库。
如果需要回滚上一次迁移,请使用以下命令:
$ docker-compose run app knex migrate:rollback
这将在 app
服务容器中回滚最近的数据库迁移。
使用 Knex 和 Docker Compose 可以让我们在容器化的开发环境中轻松管理数据库迁移。通过配置 Knex 和 Docker Compose 文件,我们可以方便地进行迁移和回滚操作,同时保持开发环境的一致性和可重现性。
希望这篇文章对你有帮助!