add docker deployment

This commit is contained in:
2026-07-19 03:59:49 +08:00
parent 4e317eff6d
commit a02921423e
4 changed files with 80 additions and 0 deletions
+17
View File
@@ -0,0 +1,17 @@
node_modules
dist
.env
.env.*
!.env.example
*.local
.DS_Store
indexer/data
indexer-dist
tsconfig.tsbuildinfo
*.log
.vite
.git
lp-terminal.tar.gz
Dockerfile
docker-compose.yml
.dockerignore
+25
View File
@@ -0,0 +1,25 @@
# syntax=docker/dockerfile:1
# 单容器双进程:lp-indexer(:8787)+ vite preview(:4173)
# 暴露 4173;preview 同源反代 /api -> 同容器 8787
FROM node:22-slim
WORKDIR /app
# 先装依赖(利用层缓存:源码变不动 node_modules 层)
COPY package.json package-lock.json ./
RUN npm ci
# 拷源码并构建(RPC 必须空:公网部署私钥不进 bundle)
COPY . .
RUN RPC="" npm run build
# indexer 数据持久化目录
RUN mkdir -p indexer/data
VOLUME /app/indexer/data
EXPOSE 4173
# 同时跑 indexer 和 preview,indexer 崩了容器不退(preview 仍可用 + dexscreener 兜底)
COPY docker-entrypoint.sh /docker-entrypoint.sh
RUN chmod +x /docker-entrypoint.sh
ENTRYPOINT ["/docker-entrypoint.sh"]
+17
View File
@@ -0,0 +1,17 @@
services:
lp-terminal:
build: .
container_name: lp-terminal
restart: unless-stopped
ports:
- "4173:4173"
volumes:
# indexer 的 SQLite 持久化(首次回填约 65 分钟,别丢)
- lp-data:/app/indexer/data
# 美国服务器 IP 直连,无需代理;如需代理取消下面注释
# environment:
# - NODE_USE_ENV_PROXY=1
# - HTTPS_PROXY=http://host.docker.internal:7890
volumes:
lp-data:
+21
View File
@@ -0,0 +1,21 @@
#!/bin/sh
# 单容器双进程启动:indexer(后台)+ preview(前台)
# 任一进程退出都让容器退出,交给 docker/compose 的 restart 策略重启
set -e
cd /app
# 后台跑 indexer
echo "[entrypoint] starting lp-indexer on :8787"
npm run indexer &
INDEXER_PID=$!
# 前台跑 preview(--host 0.0.0.0 暴露到容器外)
echo "[entrypoint] starting lp-web (preview) on :4173"
npm run preview -- --host 0.0.0.0 --port 4173 &
WEB_PID=$!
# 任一进程退出就整体退出
trap 'echo "[entrypoint] process exited, shutting down"; kill $INDEXER_PID $WEB_PID 2>/dev/null; exit 1' CHLD
wait