Skip to content

Commit f8e13cc

Browse files
committed
Separate Docker UI build
1 parent 6266259 commit f8e13cc

File tree

9 files changed

+32
-14
lines changed

9 files changed

+32
-14
lines changed

ui/.ackrc renamed to .ackrc

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
--ignore-dir=coverage
88
--ignore-dir=dist
99
--ignore-dir=node_modules
10+
--ignore-dir=static/ui
1011
--ignore-dir=tmp
1112
--ignore-dir=vendor
1213
--ignore-file=ext:svg

Dockerfile

+13-5
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,18 @@
1-
FROM golang:1.22.0-alpine3.19 AS build
2-
RUN apk add -U --no-cache make git npm
1+
FROM node:18-alpine as build-ui
2+
RUN apk add -U --no-cache make git
3+
COPY ui /src
4+
WORKDIR /src
5+
RUN make
6+
7+
FROM golang:1.22.0-alpine3.19 AS build-go
8+
RUN apk add -U --no-cache make git
39
COPY . /src/gptscript
10+
COPY --from=build-ui /src/.output/public /src/gptscript/static/ui
411
WORKDIR /src/gptscript
5-
6-
RUN make all
12+
RUN make build
713

814
FROM alpine AS release
9-
COPY --from=build /src/gptscript/bin /usr/local/bin/
15+
WORKDIR /src
16+
COPY --from=build-go /src/gptscript/bin /usr/local/bin/
17+
COPY --from=build-go /src/gptscript/examples /src/examples
1018
ENTRYPOINT ["/usr/local/bin/gptscript"]

Makefile

+4
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@ all: build-ui build
22

33
build-ui:
44
$(MAKE) -C ui
5+
rm -rf static/ui
6+
mkdir -p static/ui/_nuxt
7+
touch static/ui/placeholder static/ui/_nuxt/_placeholder
8+
cp -rp ui/.output/public/* static/ui/
59

610
build:
711
CGO_ENABLED=0 go build -o bin/gptscript -tags "${GO_TAGS}" -ldflags "-s -w" .

ui/Makefile

-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
build: clean
22
npm install
33
npm run generate
4-
rm -rf ../static/ui/_nuxt
5-
cp -rp .output/public/* ../static/ui/
6-
touch ../static/ui/_nuxt/_placeholder
74

85
clean:
96
npm run clean

ui/nuxt.config.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import pkg from './package.json'
44
dotenv.config()
55

66
const port = 9091
7+
const isDev = process.env.NODE_ENV === 'development'
8+
const api = process.env.NUXT_PUBLIC_API || (isDev ? 'http://localhost:9090/' : '/')
79

810
// https://nuxt.com/docs/api/configuration/nuxt-config
911
export default defineNuxtConfig({
@@ -35,7 +37,7 @@ export default defineNuxtConfig({
3537
nitro: { sourceMap: true },
3638
runtimeConfig: {
3739
public: {
38-
api: (process.env.NUXT_PUBLIC_API || 'http://localhost:9090/').replace(/\/+$/,'')+'/',
40+
api: api.replace(/\/+$/,'')+'/',
3941
},
4042
},
4143
sourcemap: true,

ui/pages/index.vue

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@
44

55
<img src="~/assets/logo.svg" width="300px" style="aspect-ratio: preserve;" class="inline m-5" align="center" />
66

7-
<h2 class="mt-20"><i class="i-heroicons-arrow-long-left align-middle text-lg"/> Choose a script to get started.</h2>
7+
<h2 class="mt-10"><i class="i-heroicons-arrow-long-left align-middle text-lg"/> Choose a script to get started.</h2>
88
</div>
99
</template>

ui/stores/gpts.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ export const useGpts = defineStore('gpts', {
1818
}
1919

2020
const url = useRuntimeConfig().public.api + id
21-
const data = reactive<Gpt>(await $fetch(url))
21+
const data = reactive<Gpt>(await $fetch(url, {baseURL: '/'}))
2222

2323
this.list.push(data)
2424
this.map[id] = data
@@ -27,7 +27,7 @@ export const useGpts = defineStore('gpts', {
2727

2828
async listAll() {
2929
const url = useRuntimeConfig().public.api
30-
const data = await $fetch(url, {headers: {'X-Requested-With': 'fetch'} }) as string[]
30+
const data = await $fetch(url, {baseURL: '/', headers: {'X-Requested-With': 'fetch'} }) as string[]
3131
return reactive(data)
3232
}
3333
}

ui/stores/runs.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ export const useRuns = defineStore('runs', {
4141
url = addParam(url, 'tool', toolName)
4242
}
4343

44-
const res = await $fetch(url, {method: 'POST', body: args}) as {id: string}
44+
const res = await $fetch(url, {baseURL: '/', method: 'POST', body: args}) as {id: string}
4545
const id = res.id
4646

4747
const obj: Run = reactive({

ui/stores/socket.ts

+7-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,13 @@ interface SocketState {
1212

1313
export const useSocket = defineStore('socket', {
1414
state: () => {
15-
const url = useRuntimeConfig().public.api.replace(/^http/,'ws')
15+
let url = useRuntimeConfig().public.api
16+
if ( url.startsWith('/') ) {
17+
url = `${window.location.origin}${url}`
18+
}
19+
20+
url = url.replace(/^http/,'ws')
21+
1622
const sock = useWebSocket(url, {
1723
immediate: false,
1824
autoReconnect: true,

0 commit comments

Comments
 (0)