Possible to use Dockerfile but *not* docker-compose?


I want to run nakama (go runtime) on railway.app, but railway does not support docker compose. I have my own remote instance of cockroachdb, so i do not need the cockroach service in the default compose file. Im not entirely sure what prometheus is but i suspect i might not need it. I’ve tried to modify my Dockerfile appropriately but I am a Docker noob so i might have done something blatantly wrong.


FROM heroiclabs/nakama-pluginbuilder:3.16.0 AS go-builder


WORKDIR /backend

COPY go.mod .
COPY main.go .
COPY vendor/ vendor/

RUN go build --trimpath --mod=vendor --buildmode=plugin -o ./backend.so

FROM registry.heroiclabs.com/heroiclabs/nakama:3.20.0

COPY --from=go-builder /backend/backend.so /nakama/data/modules/
COPY local.yml /nakama/data/

ENTRYPOINT ["/bin/sh", "-ecx", "/nakama/nakama migrate up --database.address <my-cockroachdb-connection-string> --config /nakama/data/local.yml --database.address <my-cockroachdb-connection-string>"]


2024-01-29 14:40:07 {"level":"info","ts":"2024-01-29T22:40:07.169Z","caller":"server/runtime.go:630","msg":"Initialising runtime","path":"/nakama/data/modules"}
2024-01-29 14:40:07 {"level":"info","ts":"2024-01-29T22:40:07.169Z","caller":"server/leaderboard_rank_cache.go:183","msg":"Leaderboard rank cache initialization completed successfully","cached":[],"skipped":[],"duration":"117.552µs"}
2024-01-29 14:40:07 {"level":"info","ts":"2024-01-29T22:40:07.169Z","caller":"server/runtime.go:637","msg":"Initialising runtime event queue processor"}
2024-01-29 14:40:07 {"level":"info","ts":"2024-01-29T22:40:07.169Z","caller":"server/runtime.go:639","msg":"Runtime event queue processor started","size":65536,"workers":8}
2024-01-29 14:40:07 {"level":"info","ts":"2024-01-29T22:40:07.169Z","caller":"server/runtime_go.go:2701","msg":"Initialising Go runtime provider","path":"/nakama/data/modules"}
2024-01-29 14:40:06 + /nakama/nakama migrate up --database.address <my-cockroachdb-connection-string>
2024-01-29 14:40:06 + exec /nakama/nakama --config /nakama/data/local.yml --database.address <my-cockroachdb-connection-string>
2024-01-29 14:40:07 fatal error: runtime: no plugin module data

I’ve verified that a backend.so is indeed being built and placed in nakama/data/modules in the docker image. Ive also tried a couple different versions of go (1.21 and 1.20) but i thought nakama-pluginbuilder was supposed to handle that issue. Not sure what else to try from here.

Any help or tips greatly valued! Thanks in advance

I think i’ve solved the problem by updating the nakama-pluginbuilder version to 3.20 (same as what nakama was set to below in the Dockerfile). I would suggest updating the the code snippet in the docs to reflect this. I assumed it was safe to copy/paste.