linux - 尽管确实存在,但在 Alpine Docker 容器中收到 [Not Found] 错误

标签 linux postgresql docker alpine-linux

当运行 alpine docker 容器并尝试构建时,我收到这样的错误消息。

/bin/sh: /etc/init.d/postgresql: not found

这是我的 Dockerfile:

FROM alpine:3.5

MAINTAINER hoge

ENV LANG en_US.utf8

ENV PHX_PORT 4000
ENV PHX_DBNAME hoge_db

COPY release.tar.gz /

RUN echo 'http://dl-3.alpinelinux.org/alpine/edge/testing' >> /etc/apk/repositories

RUN apk update && apk upgrade && \
    apk add --no-cache --virtual .base_deps build-base openssl-dev zlib-dev libxml2-dev wget gnupg ca-certificates && \
    apk add --no-cache readline-dev glib-lang libssl1.0 postgresql postgresql-client && \
    apk add --update binutils && \
    apk add --no-cache sudo && \
    apk --purge del .base_deps && \
    tar -xzf ./release.tar.gz && \
    echo "postgres ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/postgres && \
    chmod 600 /etc/sudoers.d/postgres && \
    sync && \
    /etc/init.d/postgresql setup && \
    /etc/init.d/postgresql start && \
    readelf -l /etc/init.d/postgresql | grep "program interpreter" && \
    psql -U postgres -c "CREATE DATABASE $PHX_DBNAME WITH ENCODING 'UTF8' OWNER=postgres TEMPLATE = template0;"


VOLUME /var/lib/postgresql/data

ENTRYPOINT ["psql", "-U", "postgres"]

EXPOSE 5432

/etc/init.d/postgresql肯定存在。
我确实通过实际进入容器确认了它的存在。
我该如何修改?

最佳答案

您需要将 openrc 添加到您的 apk add 命令列表中。

github issue 上找到了解决方案同样,在检查 /etc/init.d/postgresql 文件并看到 shebang 行引用 openrc

关于linux - 尽管确实存在,但在 Alpine Docker 容器中收到 [Not Found] 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46876608/

相关文章:

linux - 如何在linux中使用grep查找所有包含特定命令的文件?

postgresql - 在 SQL 中生成评分运行总和

json - 从 API 响应到 PostgreSQL 表

ruby-on-rails - 如何使用 postgres 在 rails 中查找在某一天(不是今天!)创建的记录

java - 错误服务 Rest Spring Boot : java. util.NoSuchElementException:不存在值

linux - 在 linux 命令和 Python 之间传递密码

android - Android Studio 安装报错

c++ - NetBeans C++ 中是否有 "just my code"功能?

docker - 在端口 80 上运行 Gitlab Docker 容器 ERR_CONNECTION_REFUSED

docker - 切换硬盘驱动器后找不到docker容器命令 '/hello'或不存在