如何自定义官方docker postgres映像并进行构建?

时间:2019-07-05 06:52:22

标签: postgresql docker

我需要更改官方Postgres(11.4)图像的语言环境,以便使用我的语言创建数据库。

https://github.com/docker-library/postgres/blob/87b15b6c65ba985ac958e7b35ba787422113066e/11/Dockerfile

我从正式的postgres映像中复制了Dockerfiledocker-entrypoint.sh(我尚未添加自定义内容)

aek@ubuntu:~/Desktop/Docker$ ls
docker-entrypoint.sh  Dockerfile
aek@ubuntu:~/Desktop/Docker$ sudo docker build -t postgres_custom .

Step 24/24 : CMD ["postgres"]
 ---> Running in 8720b67094b1
Removing intermediate container 8720b67094b1
 ---> eb63a36ee850
Successfully built eb63a36ee850
Successfully tagged postgres_custom:latest

图像已成功构建,但是当我尝试运行它时,出现以下错误:

aek@ubuntu:~/Desktop/Docker$ docker run --name postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres_custom
d75b25367f019e3398f7daff78260e87c02a0c1898658585ec04bbd219bbe3e9
docker: Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused "exec: \"docker-entrypoint.sh\": executable file not found in $PATH": unknown.

无法弄清楚entrypoint.sh出了什么问题。你能帮我吗?

2 个答案:

答案 0 :(得分:0)

您需要使entrypoint.sh可执行:

RUN chmod +x /path/to/entrypoint.sh

如您所说,您复制它时没有做任何进一步的更改。

答案 1 :(得分:0)

谢谢您解决了我的问题。现在,我将尝试更改Dockerfile的语言环境。这是我添加到Dockerfile中的内容

COPY docker-entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
RUN ln -s usr/local/bin/docker-entrypoint.sh / # backwards compat
ENTRYPOINT ["docker-entrypoint.sh"]