2017-02-23 91 views
1

我有以下dockerfile:如何将dos2unix添加到基于Alpine的码头集装箱中?

FROM haproxy:alpine 

RUN apk --update add bash && apk --no-cache add dos2unix rsyslog supervisor wget curl ruby which py-setuptools py-pip && pip install awscli && chmod +x /*.sh 

COPY *haproxy.cfg /etc/ 
COPY supervisord.ini /etc/ 
COPY rsyslog.conf /etc/ 

COPY entrypoint.sh/
RUN dos2unix /entrypoint.sh && apt-get --purge remove -y dos2unix 

ENTRYPOINT ["/entrypoint.sh"] 

EXPOSE 9999 

CMD ["/usr/bin/supervisord", "-c", "/etc/supervisord.ini"] 

然而,当我建立这个我得到:

fetch http://dl-cdn.alpinelinux.org/alpine/v3.5/main/x86_64/APKINDEX.tar.gz 
fetch http://dl-cdn.alpinelinux.org/alpine/v3.5/community/x86_64/APKINDEX.tar.gz 
ERROR: unsatisfiable constraints: 
    dos2unix (missing): 
    required by: world[dos2unix] 

我可以看到这里的包存在,但:https://pkgs.alpinelinux.org/packages?name=dos2unix&branch=&repo=&arch=&maintainer=

我在做什么错?

+0

你会注意到它在'testing'中,而不是'main'或'community'。 –

+0

有没有办法强制它接受测试?或者手动添加它的方法? – MrDuk

+1

出于好奇,你为什么需要它?在很多情况下,'tr -d'\ r' out && mv out in'就足够了。 –

回答

2

从你自己的链接,dos2unix是(在这个时候,2017年二月),只能在testing,而不是在maincommunity。从the relevant documentation -

如果您只有在配置中启用了主存储库,则apk将不包含来自其他存储库的包。要从边缘/测试存储库安装软件包而不更改存储库配置文件,请使用以下命令。这将告诉apk使用该特定的存储库。

apk add cherokee --update-cache --repository http://dl-3.alpinelinux.org/alpine/edge/testing/ --allow-untrusted 

在这种情况下,你会想取代dos2unixcherokee

+1

软件包已在库之间移动,因此您需要使用以下命令:'apk add dos2unix --update-cache --repository http://dl-3.alpinelinux.org/alpine/edge/community/ --allow -untrusted' –