我正在尝试初始化一个运行Postgres的容器,使用
FROM postgres:9.6
COPY my.backup /docker-entrypoint-initdb.d/
root@pc ~ % docker run -p 5432:5555 -e POSTGRES_PASSWORD=postgres
属于此数据库系统的文件将由用户“Postgres”所有。该用户还必须拥有服务器进程。
数据库集群将使用区域设置“en_us.utf8”初始化。默认的数据库编码相应地被设置为“UTF8”。默认的文本搜索配置将设置为“English”。
数据页校验和被禁用。
我已经检查了文件权限
如何确定init脚本忽略备份的原因?
如果my.backup
是一个shell脚本,则需要为它提供.sh
扩展名。从文档中:
如果您想要在由此派生的映像中执行额外的初始化,请在/docker-entrypoint-initdb.d下添加一个或多个*.sql、*.sql.gz或*.sh脚本(如果需要,请创建目录)。在entrypoint调用initdb创建默认的postgres用户和数据库之后,它将运行任何*.sql文件,运行任何可执行的*.sh脚本,并在启动服务之前从该目录中找到的任何不可执行的*.sh脚本中获取数据,以便进行进一步的初始化。
以下是我的项目结构的一部分: 我有init.sql脚本,它应该创建用户、数据库和表(用户和数据库与docker-compose.yml文件中的相同) 但当我查看docker entrypoint initdb.d文件夹时,它是空的(没有init.sql文件)。我使用以下命令: docker exec最新发布的\u postgres-passport\u 1 ls-l docker入口点initdb
问题内容: 操作系统 :debian 8.0.0-amd64,ubuntu-15.04,16.04 码头工人 :1.xx 程序: 我更改为添加一个私有Docker注册表,然后重新启动了docker服务,最后尝试提取一些映像。 一个输出显示一无所知DOCKER_OPTS环境变种。 题: 根据Docker文档,使用私有注册表的方式是通过中的DOCKER_OPTS进行。为什么这样做之后在这种环境下不生效
问题内容: 我正在尝试构建自定义的tcserver docker映像。但是我在启动Web服务器和tomcat时遇到了一些问题。 据我了解,我应该使用ENTRYPOINT运行我想要的命令。 问题是,是否可以使用ENTRYPOINT运行多个命令? 还是应该创建一个小的bash脚本来全部启动? 基本上我想做的是: 但是我不知道这是否是一个好习惯,或者是否可行。 问题答案: 如果要在入口点运行许多命令,最
问题内容: 我的脚本无法执行并抛出 。为什么这样? Dockerfile: docker-entrypoint.sh: 作品 Dockerfile: 问题答案: 该图像不包含您尝试用shebang调用的图像。您应该将其更改为脚本,或者将其删除。
问题内容: 几天前才意识到Docker似乎绕过了我的iptable规则。我对Docker和iptables并不感到不可思议。最近几天尝试了很多不同的事情。还看到最近的docker版本有了很大的变化,带有特殊的DOCKER链,应该可以让我做到这一点。但是不确定我做错了什么,但是却从不做我期望做的事情。 所以我想要的很简单。我希望它的行为像预期的那样。如果我有一个ACCEPT-Rule要通过,如果没有
问题内容: 通过进行更改时,如何确保在Dockerfile中指定的原始CMD仍设置为在其上运行? 这是事件的顺序,以使其更加清楚: 使用Dockerfile创建映像 之后从image运行容器以进行一些更改 在容器内进行更改并运行以创建带有新标签的新图像 运行新映像时,不再运行原始Dockerfile中的原始CMD条目 所以我问 如何在已提交的映像上再次从Dockerfile重置CMD? 问题答案: