手把手系列:关于如何在Dify修改自己的web样式并编译为Docker运行

我们需要一定的docker基础,同时你需要拥有一台linux环境的电脑!

步骤如下:

  • 从仓库克隆代码
git clone git@github.com:langgenius/dify.git
  • 进入码dify/web前端文件夹
cd dify/web
  • 使用任意IDE软件或文本文件打开web文件夹,然后就可以随意修改前端文件样式,替换图片啥的了

  • 在编辑都结束后,如果是中国用户打开Dockerfile文件需要换源,其他可无视该步骤

在这里插入图片描述

# 需要换源的命令
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories

RUN pnpm install --frozen-lockfile --registry https://mirrors.huaweicloud.com/repository/npm/

RUN pnpm add -g pm2 --registry https://mirrors.huaweicloud.com/repository/npm/ \
    && mkdir /.pm2 \
    && chown -R 1001:0 /.pm2 /app/web \
    && chmod -R g=u /.pm2 /app/web
  • 在命令行输入以下命令
# -t后面的文件名可以任意写
docker build . -t dify-web-20250409
  • 等待docker编译文件
[+] Building 255.0s (23/23) FINISHED                                                                                                                                                                  docker:desktop-linux
 => [internal] load build definition from Dockerfile                                                                                                                                                                  0.0s
 => => transferring dockerfile: 1.92kB                                                                                                                                                                                0.0s
 => [internal] load metadata for docker.io/library/node:20-alpine3.20                                                                                                                                                 0.0s
 => [internal] load .dockerignore                                                                                                                                                                                     0.0s
 => => transferring context: 181B                                                                                                                                                                                     0.0s
 => [internal] load build context                                                                                                                                                                                     0.2s
 => => transferring context: 2.77MB                                                                                                                                                                                   0.2s
 => CACHED [base 1/4] FROM docker.io/library/node:20-alpine3.20                                                                                                                                                       0.0s
 => [base 2/4] RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories                                                                                                                       0.1s
 => [base 3/4] RUN apk add --no-cache tzdata                                                                                                                                                                          1.0s
 => [base 4/4] RUN npm install -g pnpm@10.8.0                                                                                                                                                                         2.6s 
 => [production 1/7] RUN ln -s /usr/share/zoneinfo/UTC /etc/localtime     && echo UTC > /etc/timezone                                                                                                                 0.2s
 => [packages 1/4] WORKDIR /app/web                                                                                                                                                                                   0.1s
 => [packages 2/4] COPY package.json .                                                                                                                                                                                0.0s
 => [packages 3/4] COPY pnpm-lock.yaml .                                                                                                                                                                              0.0s
 => [packages 4/4] RUN pnpm install --frozen-lockfile --registry https://mirrors.huaweicloud.com/repository/npm/                                                                                                     53.5s
 => [production 2/7] WORKDIR /app/web                                                                                                                                                                                 0.1s
 => [builder 2/4] COPY --from=packages /app/web/ .                                                                                                                                                                    4.3s
 => [builder 3/4] COPY . .                                                                                                                                                                                            0.5s
 => [builder 4/4] RUN pnpm build                                                                                                                                                                                    156.0s
 => [production 3/7] COPY --from=builder /app/web/public ./public                                                                                                                                                     0.1s
 => [production 4/7] COPY --from=builder /app/web/.next/standalone ./                                                                                                                                                 0.3s
 => [production 5/7] COPY --from=builder /app/web/.next/static ./.next/static                                                                                                                                         0.1s
 => [production 6/7] COPY docker/entrypoint.sh ./entrypoint.sh                                                                                                                                                        0.0s
 => [production 7/7] RUN pnpm add -g pm2 --registry https://mirrors.huaweicloud.com/repository/npm/     && mkdir /.pm2     && chown -R 1001:0 /.pm2 /app/web     && chmod -R g=u /.pm2 /app/web                      29.8s
 => exporting to image                                                                                                                                                                                                1.1s
 => => exporting layers                                                                                                                                                                                               1.0s
 => => writing image sha256:8ad0c143bf6e6d7ba0a9afda5430842638b7612e867af79bbc12ca358ffa600b                                                                                                                          0.0s
 => => naming to docker.io/library/dify-web-20250409                                                                                                                                                                   0.0s

View build details: docker-desktop://dashboard/build/desktop-linux/desktop-linux/fvadzm91m0wsns9c00qkomeyw

  • 现在,我们自己的web文件已经编译完成,成为了一个images,现在先暂时不要运行该images

  • 进入dify/docker文件夹

cd dify/docker
  • 复制环境配置文件
cp .env.example .env
  • 打开docker-compose.yaml文件,并找到以下信息(大概在500行左右)
  # Frontend web application.
  web:
    image: langgenius/dify-web:version
    restart: always
    environment:
      CONSOLE_API_URL: ${CONSOLE_API_URL:-}
      APP_API_URL: ${APP_API_URL:-}
      SENTRY_DSN: ${WEB_SENTRY_DSN:-}
      NEXT_TELEMETRY_DISABLED: ${NEXT_TELEMETRY_DISABLED:-0}
      TEXT_GENERATION_TIMEOUT_MS: ${TEXT_GENERATION_TIMEOUT_MS:-60000}
      CSP_WHITELIST: ${CSP_WHITELIST:-}
      MARKETPLACE_API_URL: ${MARKETPLACE_API_URL:-https://marketplace.dify.ai}
      MARKETPLACE_URL: ${MARKETPLACE_URL:-https://marketplace.dify.ai}
      TOP_K_MAX_VALUE: ${TOP_K_MAX_VALUE:-}
      INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH: ${INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH:-}
      PM2_INSTANCES: ${PM2_INSTANCES:-2}
      LOOP_NODE_MAX_COUNT: ${LOOP_NODE_MAX_COUNT:-100}
      MAX_TOOLS_NUM: ${MAX_TOOLS_NUM:-10}
      MAX_PARALLEL_LIMIT: ${MAX_PARALLEL_LIMIT:-10}
      MAX_ITERATIONS_NUM: ${MAX_ITERATIONS_NUM:-5}
  • image修改为我们自己的dify-web-20250409

在这里插入图片描述

  • 启动 Docker 容器
# 如果版本是 Docker Compose V2
docker compose up -d
# 如果版本是 Docker Compose V1
docker-compose up -d
  • 此时会出现以下提示,我们的服务就启动成功了
[+] Running 10/10
 ✔ Container docker-ssrf_proxy-1     Running                                                                                                                                                                          0.0s 
 ✔ Container docker-sandbox-1        Running                                                                                                                                                                          0.0s 
 ✔ Container docker-db-1             Running                                                                                                                                                                          0.0s 
 ✔ Container docker-weaviate-1       Running                                                                                                                                                                          0.0s 
 ✔ Container docker-redis-1          Running                                                                                                                                                                          0.0s 
 ✔ Container docker-plugin_daemon-1  Running                                                                                                                                                                          0.0s 
 ✔ Container docker-worker-1         Running                                                                                                                                                                          0.0s 
 ✔ Container docker-api-1            Running                                                                                                                                                                          0.0s 
 ✔ Container docker-nginx-1          Started                                                                                                                                                                         20.9s 
 ✔ Container docker-web-1            Started 
  • 访问localhost127.0.0.1即可
### 修改 DIFY 项目中的前端页面代码或样式 对于DIFY项目中前端页面的修改,无论是调整HTML结构还是CSS样式,遵循良好的开发实践至关重要。 #### HTML 文件的修改 当需要更新网页的内容布局或是添加新的组件时,在文本编辑器中找到对应的HTML文件进行必要的更改。确保任何新增加的功能都具有语义化的标签,保持文档结构清晰易读[^2]。 例如,如果要防止浏览器缓存旧版本资源影响新功能展示,则可以在`<head>`部分加入如下元数据: ```html <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-cache, must-revalidate"> ``` 这有助于强制客户端每次请求最新版的数据而不是依赖本地存储副本。 #### CSS 样式的调整 为了改变现有元素的表现形式或者引入全新的视觉风格,应当在专门用于定义样式的`.css`文件里操作。假设目标是编辑位于`src/contacts_assets/assets/mycontacts.css`下的特定类选择器,那么就在相应的文本编辑工具里面打开该路径指向的目标文件,按照需求调整属性值[^1]。 比如想要让某个容器内的文字颜色变为蓝色且字体大小设为16px,可以这样写入规则集: ```css .container p { color: blue; font-size: 16px; } ``` 完成上述改动之后保存文件即可生效;如果是通过构建工具管理静态资产的话可能还需要执行额外的任务来编译这些变化到最终部署包之中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ChairC

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值