52 lines
1.7 KiB
Docker
52 lines
1.7 KiB
Docker
# 只打包「游客在线客服聊天框」
|
|
# 前端:官方 Chatwoot production 镜像(构建期已 assets:precompile / Vite 编译)
|
|
# 运行:RAILS_ENV=production,不跑 development / vite / pnpm / bundle install
|
|
#
|
|
# 对照:https://github.com/chatwoot/chatwoot/blob/v4.16.2/docker-compose.production.yaml
|
|
# https://github.com/chatwoot/chatwoot/blob/v4.16.2/docker/Dockerfile
|
|
|
|
FROM chatwoot/chatwoot:v4.16.2
|
|
|
|
USER root
|
|
|
|
# 确认生产静态资源已存在(官方镜像 precompile 产物)
|
|
RUN test -d /app/public/assets \
|
|
&& test -d /app/public/vite/assets \
|
|
&& test "$(ls -A /app/public/vite/assets 2>/dev/null | wc -l)" -gt 0 \
|
|
&& echo "[ok] Chatwoot production frontend assets present"
|
|
|
|
RUN apk add --no-cache python3 py3-pip py3-virtualenv
|
|
|
|
WORKDIR /opt/guest-cs
|
|
RUN python3 -m venv /opt/guest-cs/.venv
|
|
ENV PATH="/opt/guest-cs/.venv/bin:$PATH"
|
|
|
|
COPY flask/requirements.txt .
|
|
RUN pip install --no-cache-dir -r requirements.txt
|
|
|
|
COPY flask/ .
|
|
COPY start-chat.sh /usr/local/bin/start-chat.sh
|
|
RUN chmod +x /usr/local/bin/start-chat.sh \
|
|
&& mkdir -p /app/storage \
|
|
&& sed -i 's/\r$//' /usr/local/bin/start-chat.sh
|
|
|
|
# 与 docker-compose.production.yaml 对齐;聊天框经 7788 代理 widget
|
|
ENV RAILS_ENV=production \
|
|
NODE_ENV=production \
|
|
INSTALLATION_ENV=docker \
|
|
RAILS_SERVE_STATIC_FILES=true \
|
|
BUNDLE_WITHOUT=development:test \
|
|
EXECJS_RUNTIME=Disabled \
|
|
APP_HOST=0.0.0.0 \
|
|
APP_PORT=7788 \
|
|
APP_DEBUG=false \
|
|
CHATWOOT_GUEST_PROXY_TARGET=http://127.0.0.1:3000 \
|
|
CHATWOOT_GUEST_API_BASE=http://127.0.0.1:3000 \
|
|
CHATWOOT_GUEST_BASE_URL=http://127.0.0.1:7788/cw
|
|
|
|
# 对外产品口是 7788(聊天框);3000 仅容器内给 widget API
|
|
EXPOSE 7788
|
|
|
|
WORKDIR /app
|
|
ENTRYPOINT ["/usr/local/bin/start-chat.sh"]
|