Post

Deploy OpenWebUI

Let’s run the OpenWebUI container after building the Docker image.

Deploy OpenWebUI

In the rapidly growing ecosystem of open-source Large Language Models (LLMs), OpenWebUI has emerged as a powerful and flexible front-end solution. Whether you’re experimenting with models like llama3, mistral, or gemma via Ollama, or running your own inference pipelines, OpenWebUI provides a seamless and user-friendly interface.

Inspired by the strengths of this open-source project, I plan to leverage OpenWebUI as a foundation to build my own custom system, DS2Man.

Start with the OpenWebUI Image from DockerHub

As mentioned earlier, the documentation is well-organized. Among the available options, I will start by pulling the OpenWebUI image from DockerHub and trying it out.
For detailed information, I referred to the Doc, Quick Start page.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
(base) jaoneol@DESKTOP-B7GM3C5:~$ docker pull ghcr.io/open-webui/open-webui:main
main: Pulling from open-webui/open-webui

dad67da3f26b: Pull complete
799440a7bae7: Pull complete
9596beeb5a6d: Pull complete
15658014cd85: Pull complete
c6c4c910d4a2: Pull complete
4f4fb700ef54: Pull complete
32d4a47d6ece: Pull complete
b5489e651093: Pull complete
9df73a9f1acd: Pull complete
ea4f3bfca87f: Pull complete
9aa9eb68ebf6: Pull complete
2ae51f2080a1: Pull complete
b01f0701a561: Pull complete
7c7ccc06a016: Pull complete
ace317527ada: Pull complete
Digest: sha256:01add1f7940bf57474055aaf34d4ea0ac762c05f309735e183b3712586f0befe
Status: Downloaded newer image for ghcr.io/open-webui/open-webui:main
ghcr.io/open-webui/open-webui:main

(base) jaoneol@DESKTOP-B7GM3C5:~$ docker images
REPOSITORY                      TAG       IMAGE ID       CREATED         SIZE
ghcr.io/open-webui/open-webui   main      b74e4892e540   4 days ago      4.84GB

1
2
3
4
5
6
(base) jaoneol@DESKTOP-B7GM3C5:~$ docker run -d -p 3000:8080 -v open-webui:/app/backend/data --name open-webui ghcr.io/open-webui/open-webui:main
504de0d1957ef1133b718c4367260c5088b5c2220f969c7f61e78c2e8b69bfac
(base) jaoneol@DESKTOP-B7GM3C5:~$ docker ps
CONTAINER ID   IMAGE                                      COMMAND                  CREATED        STATUS                 PORTS                                                                                      NAMES
504de0d1957e   ghcr.io/open-webui/open-webui:main         "bash start.sh"          4 hours ago    Up 4 hours (healthy)   0.0.0.0:3000->8080/tcp, [::]:3000->8080/tcp                                                open-webui

OpenWebUI OpenWebUI

Start with the OpenWebUI Source from GitHub

From now on, I plan to use the code by pulling it and making modifications as needed. Since many parts need to be changed, I will customize it myself.
First, I will explain the process of pulling the code from OpenWebUI’s GitHub, building it with Docker, and running the generated image.

1
2
3
4
5
6
7
8
9
10
11
(base) jaoneol@DESKTOP-B7GM3C5:/mnt/d/02.MyCode/GP-MyReferenc/04.DS2Man_UI$ git clone https://github.com/open-webui/open-webui 04.DS2Man_UI
Cloning into '04.DS2Man_UI'...
remote: Enumerating objects: 114200, done.
remote: Counting objects: 100% (367/367), done.
remote: Compressing objects: 100% (187/187), done.
remote: Total 114200 (delta 308), reused 180 (delta 180), pack-reused 113833 (fr
om 2)
Receiving objects: 100% (114200/114200), 232.26 MiB | 20.88 MiB/s, done.
Resolving deltas: 100% (74063/74063), done.
Updating files: 100% (4652/4652), done.
ycjang@DESKTOP-B7GM3C5 MINGW64 /d/02.MyCode/GP-MyReference (main)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
(base) jaoneol@DESKTOP-B7GM3C5:/mnt/d/02.MyCode/GP-MyReferenc/04.DS2Man_UI$ docker build -t ds2man-ui .
[+] Building 139.2s (31/31) FINISHED                                                                                                                                              docker:default
 => [internal] load build definition from Dockerfile                                                                                                                                        0.1s
 => => transferring dockerfile: 7.03kB                                                                                                                                                      0.0s
 => resolve image config for docker-image://docker.io/docker/dockerfile:1                                                                                                                   2.4s
 => [auth] docker/dockerfile:pull token for registry-1.docker.io                                                                                                                            0.0s
 => docker-image://docker.io/docker/dockerfile:1@sha256:9857836c9ee4268391bb5b09f9f157f3c91bb15821bb77969642813b0d00518d                                                                    0.6s
 => => resolve docker.io/docker/dockerfile:1@sha256:9857836c9ee4268391bb5b09f9f157f3c91bb15821bb77969642813b0d00518d                                                                        0.0s
 => => sha256:9857836c9ee4268391bb5b09f9f157f3c91bb15821bb77969642813b0d00518d 8.40kB / 8.40kB                                                                                              0.0s
 => => sha256:176b5004df55ffa561c121dd12c0fad3ffe3c014318721c3c3d566008ce2627a 850B / 850B                                                                                                  0.0s
 => => sha256:a7a871c4f80fb0fd80a56efe8fc598eefc7be2ff7d36af617a31da498c779c68 1.26kB / 1.26kB                                                                                              0.0s
 => => sha256:724f0f61ffc85cf6ad0032c9063f7a74cd6d3590fd1138154820556e0a92073b 13.16MB / 13.16MB                                                                                            0.5s
 => => extracting sha256:724f0f61ffc85cf6ad0032c9063f7a74cd6d3590fd1138154820556e0a92073b                                                                                                   0.1s
 => [internal] load metadata for docker.io/library/node:22-alpine3.20                                                                                                                       1.8s
 => [internal] load metadata for docker.io/library/python:3.11-slim-bookworm                                                                                                                2.0s
 => [auth] library/node:pull token for registry-1.docker.io                                                                                                                                 0.0s
 => [auth] library/python:pull token for registry-1.docker.io                                                                                                                               0.0s
 => [internal] load .dockerignore                                                                                                                                                           0.1s
 => => transferring context: 281B                                                                                                                                                           0.0s
 => [base  1/13] FROM docker.io/library/python:3.11-slim-bookworm@sha256:9e1912aab0a30bbd9488eb79063f68f42a68ab0946cbe98fecf197fe5b085506                                                   0.2s
 => => resolve docker.io/library/python:3.11-slim-bookworm@sha256:9e1912aab0a30bbd9488eb79063f68f42a68ab0946cbe98fecf197fe5b085506                                                          0.0s
 => => sha256:9e1912aab0a30bbd9488eb79063f68f42a68ab0946cbe98fecf197fe5b085506 9.13kB / 9.13kB                                                                                              0.0s
 => => sha256:cfa2a40862158178855ab4f7cf6b9341646f826b0467a7b72bdeac68b03986bb 1.75kB / 1.75kB                                                                                              0.0s
 => => sha256:be3324b8ee1a17161c5fa4a20f310d4af42cbb4f22a1e7a32a98ee9196a6defd 5.37kB / 5.37kB                                                                                              0.0s
 => [internal] load build context                                                                                                                                                           5.6s
 => => transferring context: 348.85MB                                                                                                                                                       5.6s
 => [build 1/7] FROM docker.io/library/node:22-alpine3.20@sha256:2289fb1fba0f4633b08ec47b94a89c7e20b829fc5679f9b7b298eaa2f1ed8b7e                                                           2.9s
 => => resolve docker.io/library/node:22-alpine3.20@sha256:2289fb1fba0f4633b08ec47b94a89c7e20b829fc5679f9b7b298eaa2f1ed8b7e                                                                 0.0s
 => => sha256:35d1e2d251585b806c41f71d0933d7ba3afb6374ee3745523c2ae406480f6bc7 1.72kB / 1.72kB                                                                                              0.0s
 => => sha256:6b49ab3cd9c3c4f7d52aa86e5ebf9c55219b48707c9397a76141611345fe5c7b 6.21kB / 6.21kB                                                                                              0.0s
 => => sha256:0a9a5dfd008f05ebc27e4790db0709a29e527690c21bcbcd01481eaeb6bb49dc 3.63MB / 3.63MB                                                                                              0.3s
 => => sha256:ba4caef5715cce5e7de0253509b9ce257994ec6f40fd8e86f0d3846296ea3675 51.06MB / 51.06MB                                                                                            1.7s
 => => sha256:0c6d1cca32590d82bab0b754ec382d51e3404db6737b967cf0837d2964ef6029 1.39MB / 1.39MB                                                                                              0.5s
 => => sha256:2289fb1fba0f4633b08ec47b94a89c7e20b829fc5679f9b7b298eaa2f1ed8b7e 6.43kB / 6.43kB                                                                                              0.0s
 => => extracting sha256:0a9a5dfd008f05ebc27e4790db0709a29e527690c21bcbcd01481eaeb6bb49dc                                                                                                   0.1s
 => => sha256:82bea49235a67cfa65fc9a72aa287a09ee77e7b4f561791239b5862112e875c5 448B / 448B                                                                                                  0.6s
 => => extracting sha256:ba4caef5715cce5e7de0253509b9ce257994ec6f40fd8e86f0d3846296ea3675                                                                                                   1.0s
 => => extracting sha256:0c6d1cca32590d82bab0b754ec382d51e3404db6737b967cf0837d2964ef6029                                                                                                   0.0s
 => => extracting sha256:82bea49235a67cfa65fc9a72aa287a09ee77e7b4f561791239b5862112e875c5                                                                                                   0.0s
 => [base  2/13] WORKDIR /app/backend                                                                                                                                                       0.1s
 => [base  3/13] RUN if [ 0 -ne 0 ]; then     if [ 0 -ne 0 ]; then     addgroup --gid 0 app;     fi;     adduser --uid 0 --gid 0 --home /root --disabled-password --no-create-home app;     0.4s
 => [base  4/13] RUN mkdir -p /root/.cache/chroma                                                                                                                                           0.6s
 => [base  5/13] RUN echo -n 00000000-0000-0000-0000-000000000000 > /root/.cache/chroma/telemetry_user_id                                                                                   0.5s
 => [base  6/13] RUN chown -R 0:0 /app /root                                                                                                                                                0.7s
 => [base  7/13] RUN if [ "false" = "true" ]; then     apt-get update &&     apt-get install -y --no-install-recommends git build-essential pandoc netcat-openbsd curl &&     apt-get ins  54.1s
 => [build 2/7] WORKDIR /app                                                                                                                                                                0.1s
 => [build 3/7] RUN apk add --no-cache git                                                                                                                                                  1.3s
 => [build 4/7] COPY package.json package-lock.json ./                                                                                                                                      0.1s
 => [build 5/7] RUN npm ci                                                                                                                                                                 31.6s
 => [build 6/7] COPY . .                                                                                                                                                                    1.1s
 => [build 7/7] RUN npm run build                                                                                                                                                          68.3s
 => [base  8/13] COPY --chown=0:0 ./backend/requirements.txt ./requirements.txt                                                                                                             0.1s
 => [base  9/13] RUN pip3 install --no-cache-dir uv &&     if [ "false" = "true" ]; then     pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128  70.3s
 => [base 10/13] COPY --chown=0:0 --from=build /app/build /app/build                                                                                                                        1.0s
 => [base 11/13] COPY --chown=0:0 --from=build /app/CHANGELOG.md /app/CHANGELOG.md                                                                                                          0.1s
 => [base 12/13] COPY --chown=0:0 --from=build /app/package.json /app/package.json                                                                                                          0.0s
 => [base 13/13] COPY --chown=0:0 ./backend .                                                                                                                                               0.2s
 => exporting to image                                                                                                                                                                      5.4s
 => => exporting layers                                                                                                                                                                     5.4s
 => => writing image sha256:8a9310dd368bde75dd4b6a4433c3c479639cb88252c7f2334149692083db567b                                                                                                0.0s
 => => naming to docker.io/library/ds2man-ui  
1
2
3
4
5
6
7
8
9
10
(base) jaoneol@DESKTOP-B7GM3C5:/mnt/d/02.MyCode/GP-MyReferenc/04.DS2Man_UI$ docker images
REPOSITORY                      TAG                            IMAGE ID       CREATED              SIZE
ds2man-ui                       latest                         8a9310dd368b   About a minute ago   4.84GB

(base) jaoneol@DESKTOP-B7GM3C5:/mnt/d/02.MyCode/GP-MyReferenc/04.DS2Man_UI$ docker run -d -p 3000:8080 -v open-webui:/app/backend/data --name titan-ui --restart always ds2man-ui
a414e829de71758b3aaaf88156a2339f891a341bac1d18ef90634cce24338ca9

(base) jaoneol@DESKTOP-B7GM3C5:/mnt/d/02.MyCode/GP-MyReferenc/04.DS2Man_UI$ docker ps
CONTAINER ID   IMAGE                                      COMMAND                  CREATED         STATUS                            PORTS                                                                                      NAMES
a414e829de71   ds2man-ui                                  "bash start.sh"          8 seconds ago   Up 7 seconds (health: starting)   0.0.0.0:3000->8080/tcp, [::]:3000->8080/tcp                                                titan-ui

OpenWebUI The OpenWebUI instance running from the Docker image built after the Docker build

This post is licensed under CC BY 4.0 by the author.