【发布时间】:2016-03-27 14:49:32
【问题描述】:
我使用的是官方的 postgresql docker 镜像(9.4 版)。我已经扩展了 Dockerfile,所以我可以使用 bash 脚本更改 postgresql.conf 等中的设置。 它成功地为单个 sed 命令添加并在入口点运行脚本。但是当我输入 2 个或更多 sed 命令时,我收到以下错误:
/docker-entrypoint.sh:运行 /docker-entrypoint-initdb.d/config.sh
: 没有这样的文件或目录读取 /var/lib/postgresql/data/postgresql.conf
我正在尝试在 Windows 10 上结合 Vagrant 和 VirtualBox,通过 vagrant-winnfsd 插件在共享文件夹上使用 NFS 文件系统。
为什么会这样?如何更改我的 bash 脚本以使用更多配置设置?有没有更好的办法?
Docker 文件:
FROM postgres:9.4
RUN echo "Europe/Athens" > /etc/timezone \
&& dpkg-reconfigure -f noninteractive tzdata
RUN localedef -i el_GR -c -f UTF-8 -A /usr/share/locale/locale.alias el_GR.UTF-8
ADD config.sh /docker-entrypoint-initdb.d/
RUN chmod 755 /docker-entrypoint-initdb.d/config.sh
VOLUME ["/etc/postgresql", "/var/log/postgresql", "/var/lib/postgresql"]
config.sh:
#!/bin/bash
sed -i -e"s/^#logging_collector = off.*$/logging_collector = on/" /var/lib/postgresql/data/postgresql.conf
sed -i -e"s/^max_connections = 100.*$/max_connections = 1000/" /var/lib/postgresql/data/postgresql.conf
数据库.yml
postgres:
container_name: postgres-9.4
image: ***/postgres-9.4
volumes_from:
- postgres_data
ports:
- 5432:5432
environment:
- POSTGRES_USER=user
- POSTGRES_PASSWORD=password
- POSTGRES_DB=database
- USERMAP_UID=999
- USERMAP_GID=999
postgres_data:
container_name: postgres_data
image: ***/postgres-9.4
volumes:
- ./services/postgres:/etc/postgresql
- ./services/postgres:/var/lib/postgresql
- ./services/postgres/logs:/var/log/postgresql
command: "true"
【问题讨论】:
标签: postgresql docker docker-compose dockerfile postgresql-9.4