はじめに
alpine:3.13ベースのDockerfileを作ってRaspberry Pi4上でビルドしたらapk
が以下のようにコケた。
Step 6/12 : RUN apk add --update curl
---> Running in 65452985e0f9
fetch https://dl-cdn.alpinelinux.org/alpine/v3.13/main/armv7/APKINDEX.tar.gz
ERROR: https://dl-cdn.alpinelinux.org/alpine/v3.13/main: temporary error (try again later)
WARNING: Ignoring https://dl-cdn.alpinelinux.org/alpine/v3.13/main: No such file or directory
fetch https://dl-cdn.alpinelinux.org/alpine/v3.13/community/armv7/APKINDEX.tar.gz
ERROR: https://dl-cdn.alpinelinux.org/alpine/v3.13/community: temporary error (try again later)
WARNING: Ignoring https://dl-cdn.alpinelinux.org/alpine/v3.13/community: No such file or directory
ERROR: unable to select packages:
curl (no such package):
required by: world[curl]
Mac上ではビルド上手くいってるのになぜゆえ?
ちなみに現在リリースされている 3.13.0
, 3.13.1
両方でこうなった。
おそらくarmv7アーキテクチャ版固有の問題かとあたりをつけた。
検証
docker pull alpine:3.13.0
docker run --rm --name alpine-test alpine:3.13.0 uname -a
Linux 36fb4d97261e 5.4.79-v7l+ #1373 SMP Mon Nov 23 13:27:40 GMT 2020 armv7l Linux
docker run --rm --name alpine-test alpine:3.13.0 ping -c3 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
ping: clock_gettime(MONOTONIC) failed
docker run --rm --name alpine-test alpine:3.13.0 date
Sun Jan 0 00:100:4174038 1900
というわけでクロック周りがあかんせいでネットワークにつながらない。いまはこれ以上深堀りしないが根本的にダメな感じがする。
issueあがってました。
対策
バージョンを 3.12.3
に下げた
docker pull alpine:3.12.3
docker run --rm --name alpine-test alpine:3.12.3 uname -a
Linux d05b91bab944 5.4.79-v7l+ #1373 SMP Mon Nov 23 13:27:40 GMT 2020 armv7l Linux
docker run --rm --name alpine-test alpine:3.12.3 ping -c3 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: seq=0 ttl=116 time=24.230 ms
64 bytes from 8.8.8.8: seq=1 ttl=116 time=50.765 ms
64 bytes from 8.8.8.8: seq=2 ttl=116 time=38.202 ms
docker run --rm --name alpine-test alpine:3.12.3 date
Sun Feb 7 07:41:24 UTC 2021
問題なし。Dockerfileのほうも更新してビルドしたらapkも普通に通った。
おわりに
いや〜今日もはまったはまった。