💡
Serverpodで生成されるDockerfileが動かなかった
概要
serverpod create xxx
で生成されるDockerfileが以下のエラーで動かなかったので、その解決方法を記します。(※2023/7/16現在の情報です)
/bin/sh: /lib/aarch64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by /bin/sh)
/bin/sh: /lib/aarch64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by /bin/sh)
解決方法
生成されていたDockerfileの内容は以下です。
Dockerfile
FROM dart:2.19.0 AS build
WORKDIR /app
COPY . .
RUN dart pub get
RUN dart compile exe bin/main.dart -o bin/main
FROM busybox
ENV runmode=development
ENV serverid=default
ENV logging=normal
ENV role=monolith
COPY --from=build /runtime/ /
COPY --from=build /app/bin/main /app/bin/main
COPY --from=build /app/config/ config/
COPY --from=build /app/generated/ generated/
COPY --from=build /app/web/ web/
EXPOSE 8080
EXPOSE 8081
EXPOSE 8082
CMD app/bin/main --mode $runmode --server-id $serverid --logging $logging --role $role
これのFROM busybox
のバージョンを指定すれば動きました。
- FROM busybox
+ FROM busybox:1.34.1
調査内容
glibc
には全然詳しくないですけど、とりあえずdart:2.19.0
がlatestの時は動いていたんだろうと思い、dart:2.19.0
の直前にリリースされているbusybox
のバージョンを見たら1.34.1
だったのでそれを指定しました。
dart
busybox
終わりに
ググっても全然同じ症状の人を見かけないので、とりあえず書きました。
初投稿なので優しくしてください
Discussion