加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

使用docker-compose在postgresql数据库中创建表

发布时间:2020-12-16 03:30:52 所属栏目:安全 来源:网络整理
导读:我使用docker-compose来部署一个多容器python Flask Web应用程序.我很难理解在构建过程中如何在postgresql数据库中创建表,所以我不必用psql手动添加它们. 我的docker-compose.yml文件是: web: restart: always build: ./web expose: - "8000" links: - post

我使用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

我将很欣赏如何创建表格的指导.

最佳答案

I dont want to have to enter psql in order to type in

您可以简单地使用容器的内置init机制:

COPY init.sql /docker-entrypoint-initdb.d/10-init.sql

这样可以确保您的sql在DB服务器正确启动后执行.

看看他们的entrypoint script.它做了一些准备工作,正确启动psql,并查看/docker-entrypoint-initdb.d/目录,以.sh,.sql和.sql.gz为结尾的文件.

文件名中的10-是因为文件以ASCII顺序处理.您可以将其他init文件命名为20-create-tables.sql和30-seed-tables.sql.gz,并确保按照您的需要进行处理.

另请注意,调用命令does not指定数据库.记住,如果你是说,迁移到docker-compose,你现有的.sql文件也不指定DB.

您的文件将在容器的第一个启动阶段进行处理,但建立阶段.由于Docker Compose停止映像,然后恢复它们,所以几乎没有区别,但是如果在构建阶段初始化DB是至关重要的,我建议仍然通过从dockerfile调用/docker-entrypoint.sh来使用内建的init方法,然后清理/docker-entrypoint-initdb.d/目录.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读