我正在使用docker-compose部署多容器python Flask
Web应用程序。我在理解如何在构建期间如何在postgresql数据库中创建表时遇到了困难,因此我不必使用psql手动添加它们。
我的docker-compose.yml文件是:
web:
restart: always
build: ./web
expose:
- "8000"
links:
- postgres:postgres
volumes:
- /usr/src/flask-app/static
env_file: .env
command: /usr/local/bin/gunicorn -w 2 -b :8000 app:app
nginx:
restart: always
build: ./nginx/
ports:
- "80:80"
volumes:
- /www/static
volumes_from:
- web
links:
- web:web
data:
restart: always
image: postgres:latest
volumes:
- /var/lib/postgresql
command: "true"
postgres:
restart: always
image: postgres:latest
volumes_from:
- data
ports:
- "5432:5432"
我不想输入psql来输入:
CREATE DATABASE my_database;
CREATE USER this_user WITH PASSWORD 'password';
GRANT ALL PRIVILEGES ON DATABASE "my_database" to this_user;
\i create_tables.sql
我将对如何创建表的指导表示赞赏。
我不想输入psql来输入
您可以简单地使用容器的内置init机制:
COPY init.sql /docker-entrypoint-initdb.d/10-init.sql
这样可以确保在正确启动数据库服务器后执行您的sql。
看一看他们的入口点脚本。它做了一些准备工作,以正确和外观到启动PSQL /docker-entrypoint- initdb.d/
目录在结尾的文件.sh
,.sql
和.sql.gz
。
10-
文件名中的原因是因为文件以ASCII顺序处理。你能说出你的其他的init文件,如20-create-tables.sql
和30-seed- tables.sql.gz
例如,并确保他们在需要的顺序进行处理。
另请注意,调用命令未指定数据库。如果要迁移到docker-compose并且现有.sql
文件也未指定DB ,请记住这一点。
不过,您的文件将在容器的第一个开始build
阶段进行处理。由于Docker
Compose会先停止映像然后再恢复图像,所以几乎没有什么区别,但是如果您在build
阶段初始化数据库至关重要,我建议您仍然使用内置的init方法,方法是/docker- entrypoint.sh
从dockerfile 调用然后在/docker-entrypoint-initdb.d/
目录中进行清理。
我正在尝试创建一个mysql数据库/模式,如果它还不存在的话。 以下是我尝试过的: docker编写。yml公司 创建数据库 它不起作用。如果架构不存在,使用docker/docker compose创建架构的最佳方式是什么?
PostgreSQL 创建数据库可以用以下三种方式: 1、使用 CREATE DATABASE SQL 语句来创建。 2、使用 createdb 命令来创建。 3、使用 pgAdmin 工具。 CREATE DATABASE 创建数据库 CREATE DATABASE 命令需要在 PostgreSQL 命令窗口来执行,语法格式如下: 例如,我们创建一个 runoobdb 的数据库: created
这个代码不起作用。谁能告诉我在哪里可以找到用C#动态创建Postgresql数据库和表的例子? 数据库已创建,但我在创建表时遇到一个无声的失败。
我正在尝试代码优先的方法来使用Spring、Boot和Hibernate创建数据库。 但是,我现在还做不到。 这是我的控制器
使用H2, 如果数据库还不存在,则创建它。 但是,在Postgres中,不会创建不存在的数据库,因此会引发类似“DB不存在”的异常。有没有办法配置Postgres以按需创建不存在的数据库? 以下配置文件可用于重现此问题: 使用H2工作正常: 使用Postgres失败
问题内容: PostgreSQL似乎不允许创建名为“ user”的数据库表。但是MySQL将允许创建这样的表。 那是因为这是一个关键词吗?但是Hibernate无法识别任何问题(即使我们设置了PostgreSQLDialect)。 问题答案: 是保留字,通常不建议使用保留字作为标识符(表,列)。 如果您坚持要这样做,则必须将表名放在双引号中: 但是,在引用表时,您 总是 需要使用双引号。此外,表名