mirror of
https://github.com/khairul169/garage-webui.git
synced 2025-04-27 22:39:31 +07:00
chore: update dockerfile, readme, etc
This commit is contained in:
parent
b554cb4dbf
commit
6ad70370d1
@ -2,4 +2,5 @@ node_modules
|
||||
.git
|
||||
.gitignore
|
||||
*.md
|
||||
.env*
|
||||
dist
|
||||
|
30
Dockerfile
30
Dockerfile
@ -1,34 +1,28 @@
|
||||
FROM node:20-slim AS base
|
||||
FROM node:20-slim AS frontend
|
||||
WORKDIR /app
|
||||
|
||||
ENV PNPM_HOME="/pnpm"
|
||||
ENV PATH="$PNPM_HOME:$PATH"
|
||||
RUN corepack enable
|
||||
|
||||
FROM base AS frontend
|
||||
COPY package.json pnpm-lock.yaml ./
|
||||
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile
|
||||
|
||||
COPY . .
|
||||
RUN pnpm run build
|
||||
|
||||
FROM base AS backend-deps
|
||||
COPY backend/package.json backend/pnpm-lock.yaml ./
|
||||
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install -prod --frozen-lockfile
|
||||
COPY backend .
|
||||
|
||||
FROM oven/bun:alpine AS backend
|
||||
WORKDIR /app
|
||||
COPY --from=backend-deps /app .
|
||||
RUN bun run build
|
||||
|
||||
FROM oven/bun:alpine
|
||||
FROM golang:1.22.5 AS backend
|
||||
WORKDIR /app
|
||||
|
||||
ENV NODE_ENV=production
|
||||
ENV DIST_ROOT=./dist
|
||||
COPY backend/go.mod backend/go.sum ./
|
||||
RUN go mod download
|
||||
|
||||
COPY --from=frontend /app/dist /app/dist
|
||||
COPY --from=backend /app/dist /app
|
||||
COPY backend/ ./
|
||||
COPY --from=frontend /app/dist ./ui
|
||||
RUN make
|
||||
|
||||
ENTRYPOINT [ "bun" , "run", "main.js" ]
|
||||
FROM scratch
|
||||
|
||||
COPY --from=backend /app/main /bin/main
|
||||
|
||||
CMD [ "/bin/main" ]
|
||||
|
@ -13,7 +13,7 @@ The Garage Web UI is available as a Docker image. You can install it using the c
|
||||
### Docker CLI
|
||||
|
||||
```sh
|
||||
$ docker run -p 3909:3909 -v ./garage.toml:/etc/garage.toml --restart unless-stopped --name garage-webui khairul169/garage-webui:latest
|
||||
$ docker run -p 3909:3909 -v ./garage.toml:/etc/garage.toml:ro --restart unless-stopped --name garage-webui khairul169/garage-webui:latest
|
||||
```
|
||||
|
||||
### Docker Compose
|
||||
@ -37,7 +37,7 @@ services:
|
||||
container_name: garage-webui
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ./garage.toml:/etc/garage.toml
|
||||
- ./garage.toml:/etc/garage.toml:ro
|
||||
ports:
|
||||
- 3909:3909
|
||||
```
|
||||
@ -89,7 +89,7 @@ Once your instance of Garage Web UI is started, you can open the web UI at http:
|
||||
|
||||
## Development
|
||||
|
||||
This project is bootstrapped using TypeScript, Bun, React, and Hono. If you want to build it yourself or add additional features, follow these steps:
|
||||
This project is bootstrapped using TypeScript & React for the UI, and Go for backend. If you want to build it yourself or add additional features, follow these steps:
|
||||
|
||||
### Setup
|
||||
|
||||
|
51
backend/.air.toml
Normal file
51
backend/.air.toml
Normal file
@ -0,0 +1,51 @@
|
||||
root = "."
|
||||
testdata_dir = "testdata"
|
||||
tmp_dir = "tmp"
|
||||
|
||||
[build]
|
||||
args_bin = []
|
||||
bin = "./tmp/main"
|
||||
cmd = "go build -o ./tmp/main ."
|
||||
delay = 1000
|
||||
exclude_dir = ["assets", "tmp", "vendor", "testdata"]
|
||||
exclude_file = []
|
||||
exclude_regex = ["_test.go"]
|
||||
exclude_unchanged = false
|
||||
follow_symlink = false
|
||||
full_bin = ""
|
||||
include_dir = []
|
||||
include_ext = ["go", "tpl", "tmpl", "html"]
|
||||
include_file = []
|
||||
kill_delay = "0s"
|
||||
log = "build-errors.log"
|
||||
poll = false
|
||||
poll_interval = 0
|
||||
post_cmd = []
|
||||
pre_cmd = []
|
||||
rerun = false
|
||||
rerun_delay = 500
|
||||
send_interrupt = false
|
||||
stop_on_error = false
|
||||
|
||||
[color]
|
||||
app = ""
|
||||
build = "yellow"
|
||||
main = "magenta"
|
||||
runner = "green"
|
||||
watcher = "cyan"
|
||||
|
||||
[log]
|
||||
main_only = false
|
||||
time = false
|
||||
|
||||
[misc]
|
||||
clean_on_exit = false
|
||||
|
||||
[proxy]
|
||||
app_port = 0
|
||||
enabled = false
|
||||
proxy_port = 0
|
||||
|
||||
[screen]
|
||||
clear_on_rebuild = false
|
||||
keep_scroll = true
|
@ -1,6 +1,6 @@
|
||||
|
||||
build:
|
||||
go build -o main -tags="prod" main.go
|
||||
CGO_ENABLED=0 go build -o main -tags="prod" main.go
|
||||
|
||||
run:
|
||||
go run main.go
|
||||
|
@ -2,4 +2,7 @@ module khairul169/garage-webui
|
||||
|
||||
go 1.22.5
|
||||
|
||||
require github.com/pelletier/go-toml/v2 v2.2.2 // indirect
|
||||
require (
|
||||
github.com/joho/godotenv v1.5.1 // indirect
|
||||
github.com/pelletier/go-toml/v2 v2.2.2 // indirect
|
||||
)
|
||||
|
@ -1,5 +1,7 @@
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=
|
||||
github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
|
||||
github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM=
|
||||
github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
|
@ -7,9 +7,13 @@ import (
|
||||
"khairul169/garage-webui/utils"
|
||||
"log"
|
||||
"net/http"
|
||||
|
||||
"github.com/joho/godotenv"
|
||||
)
|
||||
|
||||
func main() {
|
||||
godotenv.Load()
|
||||
|
||||
if err := utils.Garage.LoadConfig(); err != nil {
|
||||
log.Fatal("Failed to load config! ", err)
|
||||
}
|
||||
@ -21,7 +25,7 @@ func main() {
|
||||
ui.ServeUI()
|
||||
|
||||
host := utils.GetEnv("HOST", "0.0.0.0")
|
||||
port := utils.GetEnv("PORT", "3908")
|
||||
port := utils.GetEnv("PORT", "3909")
|
||||
|
||||
addr := fmt.Sprintf("%s:%s", host, port)
|
||||
log.Printf("Starting server on http://%s", addr)
|
||||
|
@ -21,7 +21,7 @@ type garage struct {
|
||||
var Garage = &garage{}
|
||||
|
||||
func (g *garage) LoadConfig() error {
|
||||
path := GetEnv("CONFIG_PATH", "/etc/garage/garage.toml")
|
||||
path := GetEnv("CONFIG_PATH", "/etc/garage.toml")
|
||||
data, err := os.ReadFile(path)
|
||||
|
||||
if err != nil {
|
||||
|
@ -13,9 +13,7 @@ services:
|
||||
image: khairul169/garage-webui:latest
|
||||
container_name: garage-webui
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- CONFIG_PATH=/etc/garage.toml
|
||||
volumes:
|
||||
- ./garage.toml:/etc/garage.toml
|
||||
- ./garage.toml:/etc/garage.toml:ro
|
||||
ports:
|
||||
- 3909:3909
|
||||
|
@ -8,7 +8,7 @@
|
||||
"build": "tsc -b && vite build",
|
||||
"lint": "eslint .",
|
||||
"preview": "vite preview",
|
||||
"dev:server": "cd backend && npm run dev",
|
||||
"dev:server": "cd backend && air",
|
||||
"dev": "concurrently \"npm run dev:client\" \"npm run dev:server\""
|
||||
},
|
||||
"dependencies": {
|
||||
|
Loading…
x
Reference in New Issue
Block a user