无法使用初始架构构建Postgres Docker容器

我想在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组成

我尝试通过以下方式检查我的数据库

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时,它将为/ var / lib / postgresql / data创建一个容器和本地volume.

docker-compose images
   Container       Repository      Tag       Image Id      Size 
----------------------------------------------------------------
test_postgres_1   test_postgres   latest   4514d60c85fb   274 MB

然后,根据您的情况,每次都从相同的容器和体积开始.

因此,如果您在不提供初始化脚本时先使用docker-compose up,然后更改Dockerfile来添加初始化脚本.除非您删除现有的容器,否则它将不起作用.

因为,在本地卷PG_VERSION中创建了文件.并在数据库初始化之前对其进行检查.

这就是为什么

$docker-compose down

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

转载注明原文:无法使用初始架构构建Postgres Docker容器 - 代码日志