gpt4 book ai didi

docker - 无法使用初始架构构建 postgres docker 容器

转载 作者:行者123 更新时间:2023-12-01 09:05:58 25 4
gpt4 key购买 nike

我想在 docker postgres 中设置一些初始表。

我看https://stackoverflow.com/a/34753186/72437 ,认为这会是直截了当的。

docker-compose.yml

version: '2'
services:
postgres:
build:
context: ./postgres
dockerfile: Dockerfile
restart: always
ports:
- "5432:5432"

postgres/postgres.sql
CREATE TABLE my_table (
client_id character varying(36) NOT NULL,
value character varying(255)
);

postgres/Dockerfile
FROM postgres:latest
ENV POSTGRES_DB my_db
ADD postgres.sql /docker-entrypoint-initdb.d/

然后,我执行
  • docker-compose 构建
  • docker-compose up

  • 我尝试通过以下方式检查我的数据库
    docker ps
    docker exec -it bb54abc9be16 bash
    root@bb54abc9be16:/# psql -h 127.0.0.1 -U postgres
    psql (10.1)
    Type "help" for help.

    postgres=# \l
    List of databases
    Name | Owner | Encoding | Collate | Ctype | Access privileges

    -----------+----------+----------+------------+------------+-----------------------
    postgres | postgres | UTF8 | en_US.utf8 | en_US.utf8 |
    template0 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres
    | | | | | postgres=CTc/postgres
    template1 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres
    | | | | | postgres=CTc/postgres
    (3 rows)

    好像 my_db DB 和 my_table表未创建。

    我可以知道我错过了什么吗?

    最佳答案

    运行 docker-compose down命令来清理您现有的容器和卷。

    我已经按照你的流程去做了。它对我有用。

    $ docker-compose down
    $ docker-compose build
    $ docker-compose up

    当我使用 docker-compose up第一次,它创建了一个容器和本地 volume/var/lib/postgresql/data .
    docker-compose images
    Container Repository Tag Image Id Size
    ----------------------------------------------------------------
    test_postgres_1 test_postgres latest 4514d60c85fb 274 MB

    然后,在您的情况下,每次都以相同的容器和体积开始。

    所以如果你第一次使用 docker-compose up当您没有提供init脚本时,然后更改Dockerfile以添加init脚本。除非您删除现有的容器,否则它不会起作用。

    因为,在本地卷 PG_VERSION文件被创建。并在数据库初始化之前检查。

    这就是为什么
    $ docker-compose down

    这将清理您现有的容器和本地卷。

    关于docker - 无法使用初始架构构建 postgres docker 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48630517/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com