🐈
自作のwebサーバを作成してみる
web サーバを自作して理解を深めるのと、go についてもっと触れたいと思ったため、作成に至りました。
リポジトリは以下です。
スターをいただけると喜びます。
features
✅ reverse proxy
工夫点
- Dockerfile をマルチステージにし、超軽量に
全然機能がないため、超軽量です w
FROM golang:1.23.1-alpine AS builder
WORKDIR /app
EXPOSE 8080
RUN \
go mod download
RUN \
go build -o /go/bin/main .
FROM gcr.io/distroless/cc
COPY /go/bin/main /go/bin/main
CMD ["/go/bin/main"]
以下の記事でも書かれているのですが、
RUN \
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