在PostgreSQL Docker映像中创建表

Vaibhav库马尔

我是Docker的新手。我已经扩展了PostgreSQL映像,并且能够在运行映像时创建新的数据库实例。我需要从将执行.sql文件的shell脚本在该数据库中创建表。在运行PostgreSQL映像时,它说服务器未启动?我们如何仅在PostgreSQL服务器在docker容器中启动后才能执行脚本?

Dockerfile:

FROM postgres:9.3
ENV POSTGRES_USER docker
ENV POSTGRES_PASSWORD docker
ENV POSTGRES_DB docker 
RUN apt-get update && apt-get install -y postgresql-9.3 postgresql-client-9.3 postgresql-contrib-9.3
ADD initialize.sh /home/MM0312/docker-entrypoint-initdb.d/initialize.sh
CMD ["/home/MM0312/docker-entrypoint-initdb.d/initialize.sh"]

initialize.sh

#!/bin/bash
set -e
set -x

echo "******PostgreSQL initialisation******"
gosu docker psql -h localhost -p 5432 -U docker -d $docker -a -f createDatabase.sql

createDatabase.sql文件

CREATE TABLE web_origins (
    client_id character varying(36) NOT NULL,
    value character varying(255)
);
吕西洛

postgres官方docker映像的docker-entrypoint.sh脚本中编写了:

psql+=( --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" )

        echo
        for f in /docker-entrypoint-initdb.d/*; do
            case "$f" in
                *.sh)     echo "$0: running $f"; . "$f" ;;
                *.sql)    echo "$0: running $f"; "${psql[@]}" < "$f"; echo ;;
                *.sql.gz) echo "$0: running $f"; gunzip -c "$f" | "${psql[@]}"; echo ;;
                *)        echo "$0: ignoring $f" ;;
            esac
            echo
done

因此,您要在docker映像中执行的每个.sql文件都可以放在该文件夹中。所以我的dockerfile看起来像

FROM postgres:9.3
ENV POSTGRES_USER docker
ENV POSTGRES_PASSWORD docker
ENV POSTGRES_DB docker
ADD CreateDB.sql /docker-entrypoint-initdb.d/

以及我的CreateDB.sql的内容:

CREATE TABLE web_origins (
    client_id character varying(36) NOT NULL,
    value character varying(255)
);

所以我只用以下内容启动容器:

docker run -d my-postgres

去检查:

docker exec -it 6250aee43d12 bash
root@6250aee43d12:/# psql -h localhost -p 5432 -U docker -d docker
psql (9.3.13)
Type "help" for help.

docker=# \c
You are now connected to database "docker" as user "docker".
docker=# \dt
           List of relations
 Schema |    Name     | Type  | Owner
--------+-------------+-------+--------
 public | web_origins | table | docker
(1 row)

您可以在此博客中找到有关mysql的详细信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在PostgreSQL表中创建多个索引的缺点

来自分类Dev

在PostgreSQL中创建仅插入表

来自分类Dev

在PostgreSQL中创建表分区的权限继承

来自分类Dev

在PostgreSQL表中创建多个索引的缺点

来自分类Dev

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

来自分类Dev

在PostgreSQL中创建类型

来自分类Dev

PostgreSQL中的表锁

来自分类Dev

PostgreSQL中的联接表

来自分类Dev

Docker Swarm 中所有服务的基本映像中的 Avro?NiFi --> Kafka --> PostgreSQL

来自分类Dev

在Docker中创建映像失败

来自分类Dev

如何在docker中为postgresql创建postgis扩展?

来自分类Dev

如何在docker中为postgresql创建postgis扩展?

来自分类Dev

从PostgreSQL中的类别数组创建类别树表

来自分类Dev

如何在PostgreSQL中创建* _swap表(带索引)

来自分类Dev

从MySQL迁移时在PostgreSQL中创建表时出错

来自分类Dev

从PostgreSQL中的类别数组创建类别树表

来自分类Dev

在PostgreSQL中为带有前缀的表创建索引

来自分类Dev

在Postgresql中创建具有多对一关系的表

来自分类Dev

从MySQL迁移时在PostgreSQL中创建表时出错

来自分类Dev

基于PostgreSQL 9.2中的循环创建动态表

来自分类Dev

在PostgreSQL中创建数据库表的广泛视图

来自分类Dev

PostgreSQL 函数在循环函数中动态重塑和创建表

来自分类Dev

我应该如何使用Postgresql docker映像/容器?

来自分类Dev

我的 PostgreSQL Docker 映像在添加 CMD 后停止运行

来自分类Dev

使用PostgreSQL在WITH(CTE)中创建

来自分类Dev

在PostgreSQL中创建隐藏列

来自分类Dev

无法在Postgresql中创建b

来自分类Dev

在PostgreSQL中创建隐藏列

来自分类Dev

在Docker容器中安装PostgreSQL

Related 相关文章

热门标签

归档