Jordi
Jordi

Reputation: 23187

Docker build failed: "unsatisfable contraints"

I've written this straightforward Dockerfile:

FROM alpine

WORKDIR /usr/src

RUN apk add --no-cache curl jq
RUN mkdir /env

COPY src/* /usr/src/
RUN chmod u+x /usr/src/*.sh

CMD /usr/src/wsec.sh

When I try to build the image, I'm getting this error message:

Sending build context to Docker daemon  43.52kB
Step 1 : FROM alpine
 ---> 3fd9065eaf02
Step 2 : WORKDIR /usr/src
 ---> Using cache
 ---> 4c7b79dc4239
Step 3 : RUN apk add --no-cache curl jq
 ---> Running in 0cf83217477a
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/main/x86_64/APKINDEX.tar.gz
WARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/v3.7/main/x86_64/APKINDEX.tar.gz: temporary error (try again later)
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/community/x86_64/APKINDEX.tar.gz
WARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/v3.7/community/x86_64/APKINDEX.tar.gz: temporary error (try again later)
ERROR: unsatisfiable constraints:
  curl (missing):
    required by: world[curl]
  jq (missing):
    required by: world[jq]
The command '/bin/sh -c apk add --no-cache curl jq' returned a non-zero code: 2

Upvotes: 0

Views: 1757

Answers (1)

nickgryg
nickgryg

Reputation: 28593

It could happen that main alpine repository http://dl-cdn.alpinelinux.org/alpine is temporary unavailable. Just like in your case. In order to be not blocked on this issue, we should add other alpine repositories to our alpine image:

http://dl-2.alpinelinux.org
http://dl-3.alpinelinux.org
http://dl-4.alpinelinux.org
http://dl-5.alpinelinux.org

So, the final Dockerfile is:

FROM alpine

WORKDIR /usr/src

RUN echo "http://dl-2.alpinelinux.org/alpine/v3.7/main" >> /etc/apk/repositories      && \ 
    echo "http://dl-2.alpinelinux.org/alpine/v3.7/community" >> /etc/apk/repositories && \
    echo "http://dl-3.alpinelinux.org/alpine/v3.7/main" >> /etc/apk/repositories      && \
    echo "http://dl-3.alpinelinux.org/alpine/v3.7/community" >> /etc/apk/repositories && \
    echo "http://dl-4.alpinelinux.org/alpine/v3.7/main" >> /etc/apk/repositories      && \
    echo "http://dl-4.alpinelinux.org/alpine/v3.7/community" >> /etc/apk/repositories && \
    echo "http://dl-5.alpinelinux.org/alpine/v3.7/main" >> /etc/apk/repositories      && \
    echo "http://dl-5.alpinelinux.org/alpine/v3.7/community" >> /etc/apk/repositories 

RUN apk add --no-cache curl jq

RUN mkdir /env

COPY src/* /usr/src/
RUN chmod u+x /usr/src/*.sh

CMD /usr/src/wsec.sh

Upvotes: 2

Related Questions