Merge pull request #10 from Lyric-c/main

静态文件嵌入到可执行文件中
This commit is contained in:
srcrs 2023-08-08 23:37:41 +08:00 committed by GitHub
commit 58523f731d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 27 additions and 5 deletions

View File

@ -3,13 +3,15 @@ FROM golang:1.20.4-alpine3.18 AS builder
COPY . /src
WORKDIR /src
#国内服务器可以取消以下注释
#RUN go env -w GO111MODULE=on && \
# go env -w GOPROXY=https://goproxy.cn,direct
RUN go build -ldflags "-s -w" -o ./bin/ .
FROM alpine
COPY --from=builder /src/bin /app
COPY --from=builder /src/index.html /app/index.html
COPY --from=builder /src/static /app/static
COPY --from=builder /src/config.json /app/config.json
WORKDIR /app

View File

@ -57,6 +57,12 @@ git clone https://github.com/srcrs/rss-reader
docker-compose up -d
```
国内服务器将Dockerfile中取消下面注释使用 go mod 镜像
```dockerfile
#RUN go env -w GO111MODULE=on && \
# go env -w GOPROXY=https://goproxy.cn,direct
```
部署成功后通过ip+端口号访问
# nginx反代

20
main.go
View File

@ -1,6 +1,7 @@
package main
import (
"embed"
"encoding/json"
"fmt"
"io/ioutil"
@ -25,6 +26,13 @@ var (
rssUrls Config
upgrader = websocket.Upgrader{}
connMu sync.Mutex // 定义互斥锁
//go:embed static
dirStatic embed.FS
//go:embed index.html
fileIndex embed.FS
htmlContent []byte
)
func init() {
@ -38,6 +46,11 @@ func init() {
if err != nil {
panic(err)
}
// 读取 index.html 内容
htmlContent, err = fileIndex.ReadFile("index.html")
if err != nil {
panic(err)
}
initDB()
}
@ -58,13 +71,14 @@ func main() {
http.HandleFunc("/", serveHome)
//加载静态文件
fs := http.FileServer(http.Dir("static"))
http.Handle("/static/", http.StripPrefix("/static/", fs))
fs := http.FileServer(http.FS(dirStatic))
http.Handle("/static/", fs)
log.Fatal(http.ListenAndServe(":8080", nil))
}
func serveHome(w http.ResponseWriter, r *http.Request) {
http.ServeFile(w, r, "index.html")
w.Header().Add("Content-Type", "text/html; charset=utf-8")
w.Write(htmlContent)
}
func wsHandler(w http.ResponseWriter, r *http.Request) {