我需要在我的Docker Postgres中安装hstore
。
以下是我用于执行此操作的标准命令:
psql -d template1 -c 'create extension hstore';
如果我删除容器中的那行代码,它可以正常工作,但我必须自己执行“hstore”安装并告诉项目中的每个人这样做,这不是一个好的做法。这是我的yml文件。
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
?
我想创建一个镜像并在我的团队整个项目中重复使用它。
CREATE DATABASE
之后运行,因此它只会安装在模板(我猜)数据库上,而不是您想要的那个。我还没想出如何解决这个问题,除非在sql文件中实际指定数据库名称。编辑:尽管我刚刚重新审查了Docker镜像,并将--dbname传递给psql,所以我不确定。 - dannosaur