相关疑难解决方法(0)

如何在Docker Postgres的脚本中创建用户/数据库

我一直在尝试通过创建自定义用户和数据库来为开发postgres实例设置容器.我正在使用官方的postgres docker图像.在文档中,它指示您在/docker-entrypoint-initdb.d/文件夹中插入一个bash脚本,以使用任何自定义参数设置数据库.

我的bash脚本:make_db.sh

su postgres -c "createuser -w -d -r -s docker"
su postgres -c "createdb -O docker docker"
Run Code Online (Sandbox Code Playgroud)

Dockerfile

FROM library/postgres

RUN ["mkdir", "/docker-entrypoint-initdb.d"]
ADD make_db.sh /docker-entrypoint-initdb.d/
Run Code Online (Sandbox Code Playgroud)

我从docker logs -f db(db是我的容器名称)得到的错误是:

createuser:无法连接到数据库postgres:无法连接到服务器:没有这样的文件或目录

似乎/docker-entrypoint-initdb.d/在postgres启动之前正在执行文件夹内的命令.我的问题是,如何使用官方postgres容器以编程方式设置用户/数据库?有没有办法用脚本执行此操作?

postgresql bash docker dockerhub

179
推荐指数
8
解决办法
17万
查看次数

Docker - 如何在postgres容器中运行psql命令?

我想在postgres图像中使用psql,以便在数据库上运行一些查询.但不幸的是,当我附加到postgres容器时,我得到了错误,找不到psql命令...

对我来说,如何在容器中运行postgre sql查询或命令是一个谜.

如何在postgres容器中运行psql命令?(我是Docker世界的新人)

我使用Ubuntu作为主机,我没有在主机上安装postgres,我使用postgres容器代替.

docker-compose ps
        Name                       Command               State               Ports            
---------------------------------------------------------------------------------------------
yiialkalmi_app_1        /bin/bash                        Exit 0                               
yiialkalmi_nginx_1      nginx -g daemon off;             Up       443/tcp, 0.0.0.0:80->80/tcp 
yiialkalmi_php_1        php-fpm                          Up       9000/tcp                    
yiialkalmi_postgres_1   /docker-entrypoint.sh postgres   Up       5432/tcp                    
yiialkalmi_redis_1      docker-entrypoint.sh redis ...   Up       6379/tcp     
Run Code Online (Sandbox Code Playgroud)

这里的容器:

docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                         NAMES
315567db2dff        yiialkalmi_nginx    "nginx -g 'daemon off"   18 hours ago        Up 3 hours          0.0.0.0:80->80/tcp, 443/tcp   yiialkalmi_nginx_1
53577722df71        yiialkalmi_php      "php-fpm"                18 hours ago        Up 3 hours          9000/tcp                      yiialkalmi_php_1
40e39bd0329a        postgres:latest     "/docker-entrypoint.s"   18 …
Run Code Online (Sandbox Code Playgroud)

postgresql docker docker-compose

43
推荐指数
6
解决办法
5万
查看次数

在docker-compose中的容器入口点之后运行脚本

我有一个postgres:9.5.6-alpine容器,另一个名为web的容器,必须链接到它.我想在启动后运行create_db.shpostgres容器中命名的脚本并执行docker-entrypoint.sh,以便创建数据库和用户并恢复备份.我docker-compose.yml(postgres部分):

  postgres:
    build: ./postgres
    container_name: postgres
    volumes:
      - /shared_folder/postgresql:/var/lib/postgresql
    ports:
      - "5432:5432"    
    command:  sh /home/create_db.sh
Run Code Online (Sandbox Code Playgroud)

内容create_db.sh是:

#!/bin/sh

psql -d template1 -U postgres
psql --command "CREATE USER user WITH PASSWORD 'userpassword';" 
psql --command "CREATE DATABASE userdb;"
psql --command "GRANT ALL PRIVILEGES ON DATABASE userdb to user;"
psql --command "\q;"  
psql -U user -d userdb -f /var/lib/postgresql/backup.sql

exit
Run Code Online (Sandbox Code Playgroud)

当我跑docker-compose build,然后docker-compose up我得到这个:

Attaching to postgres, web
postgres    | psql: could not connect to …
Run Code Online (Sandbox Code Playgroud)

postgresql docker docker-compose

3
推荐指数
1
解决办法
5287
查看次数

如何为postgres docker容器的初始化脚本指定当前工作数据库?

众所周知,可以使用类似于以下命令的 docker 命令复制要在创建容器时执行的 init.sql 文件:COPY init.sql /docker-entrypoint-initdb.d/

让我们考虑使用一个非常简单的 create table postgresql 语句:

CREATE TABLE films (
  code        char(5) CONSTRAINT firstkey PRIMARY KEY,
  title       varchar(40) NOT NULL,
  did         integer NOT NULL,
  date_prod   date,
  kind        varchar(10),
  len         interval hour to minute
);
Run Code Online (Sandbox Code Playgroud)

问题是这个表是在哪里(在哪个数据库中)创建的?

但更重要的是如何设置当前工作数据库以准确指定我们正在使用哪个数据库?
不仅是这句话,还有后来的所有言论,而且还很多!

postgresql docker

3
推荐指数
1
解决办法
1757
查看次数

标签 统计

docker ×4

postgresql ×4

docker-compose ×2

bash ×1

dockerhub ×1