docker如何在启动时创建数据库并导入表
时间: 2024-05-09 11:21:56 浏览: 152
首先,你需要在 Dockerfile 中定义一个包含以下命令的脚本:
```bash
#!/bin/bash
set -e
# Create a new database
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" <<-EOSQL
CREATE DATABASE mydatabase;
EOSQL
# Import the SQL schema
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname mydatabase < /path/to/my/schema.sql
```
然后,在你的 docker-compose.yml 文件中,将该脚本挂载到容器的 /docker-entrypoint-initdb.d/ 目录下:
```yaml
version: '3'
services:
db:
image: postgres
restart: always
environment:
POSTGRES_USER: myuser
POSTGRES_PASSWORD: mypassword
POSTGRES_DB: mydatabase
volumes:
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
```
它将使用你在 Dockerfile 中编写的脚本创建名为 mydatabase 的新数据库,并将 /path/to/my/schema.sql 中的 SQL 表结构导入该数据库。注意要将 /path/to/my/schema.sql 替换为你的实际文件路径,并确保 init.sql 与脚本名称匹配。
阅读全文