💡

Serverpodで生成されるDockerfileが動かなかった

2023/07/16に公開

概要

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
dart
busybox
busybox

終わりに

ググっても全然同じ症状の人を見かけないので、とりあえず書きました。

初投稿なので優しくしてください

Discussion