🐈
自作のwebサーバを作成してみる
web サーバを自作して理解を深めるのと、go についてもっと触れたいと思ったため、作成に至りました。
リポジトリは以下です。
スターをいただけると喜びます。
features
✅ reverse proxy
工夫点
- Dockerfile をマルチステージにし、超軽量に
全然機能がないため、超軽量です w
FROM golang:1.23.1-alpine AS builder
WORKDIR /app
EXPOSE 8080
RUN --mount=source=go.mod,target=go.mod \
--mount=source=go.sum,target=go.sum \
go mod download
RUN --mount=source=.,target=.\
go build -o /go/bin/main .
FROM gcr.io/distroless/cc
COPY --from=builder /go/bin/main /go/bin/main
CMD ["/go/bin/main"]
以下の記事でも書かれているのですが、
RUN --mount=source=.,target=.\
go build -o /go/bin/main .
このように、build したものは、current directory ではない場所に保存してください。
mount=bindは read-only になるそうです。
- tomlファイルで設定する。
以下のようにtomlファイルを作成することで、あるエンドポイント来たら指定されたサーバへ接続する。
example.toml
[server1]
host = "service1"
port = 80
endpoint = "/service1"
[server2]
host = "service2"
port = 80
endpoint = "/service2"
追加していきたい機能
- ロードバランサを追加する
- persistenceの設定項目の追加
Discussion