如何在容器内创buildpostgres扩展?
我必须安装hstore
到我的hstore
postgres
这是我在shell中的普通命令来执行我的需要
psql -d template1 -c 'create extension hstore';
如果我删除了这个行,我的容器,它的工作原理,但我自己执行hstore
安装,我必须告诉我的项目中的每个人这样做,这不是一个好的做法
这是我的yml file
postgres: build: context: . dockerfile: dockerfiles/devdb.dockerfile environment: POSTGRES_USER: uih POSTGRES_PASSWORD: uIhbod! POSTGRES_DB: uih_portal ports: - "5433:5432"
这是我的docker文件devdb.dockerfile
FROM postgres:9.5 RUN mkdir -p /var/lib/postgresql-static/data ENV PGDATA /var/lib/postgresql-static/data # psql -d template1 -c 'create extension hstore;' CMD ["psql", "-d", "template1", "-c", "'create extension hstore;'"] RUN echo "hstore extension installed"
生成后,我无法得到它运行
$ docker-compose up postgres Recreating uihportal_postgres_1 Attaching to uihportal_postgres_1 postgres_1 | psql: could not connect to server: No such file or directory postgres_1 | Is the server running locally and accepting postgres_1 | connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"? uihportal_postgres_1 exited with code 2
题:
如何从dockerfile安装hstore?
我想要为我的团队制作一个图像并重新用于整个项目
由于Postgres在构build期间没有在容器中运行,所以它失败了,它只在容器运行时在CMD
启动。
Docker映像的入口点脚本支持运行设置步骤 – 容器启动时将执行/docker-entrypoint-initdb.d
目录中的任何.sql或.sh文件。
所以你可以通过将你的扩展设置放在SQL脚本中,然后将脚本复制到init目录中的映像中来实现:
> cat hstore.sql create extension hstore > cat Dockerfile FROM postgres:9.5 COPY hstore.sql /docker-entrypoint-initdb.d
当你build立这个图像时,SQL脚本将被放置在正确的位置,所以无论何时从图像中运行一个容器,它都会安装扩展。
- WSO2:RegistryCoreServiceComponent无法激活registry核心包
- 你如何设置包含私人git仓库的docker图像的ssh密钥?
- docker jboss7 war commit。 服务器启动以不可恢复的方式失败
- 我可以自动化一个公共回购的Docker图像构build我不是一个成员?
- 如何在Docker for Windows中设置Docker容器时间
- docker为Windows安装一个文件夹,但几个小时后无法打开它
- 在Kubernetes集群中的自定义docker容器与使用Stackdriver的日志
- Docker PostgreSQL查询输出
- 在这个Dockerfile中创buildPostgres用户名/密码在哪里?