| FROM node:20-alpine3.21 |
| ARG BUILD_DATE |
| LABEL build-date=$BUILD_DATE |
| LABEL maintainer="ZHAO Xudong <zxdong@gmail.com>" |
| LABEL description="This is Docker image for electerm-web" |
| LABEL url="https://github.com/electerm/electerm-web-docker" |
| LABEL vendor="electerm" |
| LABEL version="2.60.56" |
|
|
| WORKDIR /app |
|
|
| RUN apk add --no-cache python3 py3-pip |
|
|
| RUN addgroup -S electerm && \ |
| adduser -S -G electerm -h /home/electerm -s /bin/sh electerm && \ |
| mkdir -p /home/electerm /app && \ |
| chown -R electerm:electerm /home/electerm /app && \ |
| chmod 755 /home/electerm |
|
|
| ENV VIRTUAL_ENV=/opt/venv |
| RUN python3 -m venv $VIRTUAL_ENV |
| ENV PATH="$VIRTUAL_ENV/bin:$PATH" |
| RUN pip install --no-cache-dir huggingface_hub |
|
|
| RUN apk update && apk add --no-cache \ |
| python3 \ |
| git \ |
| make \ |
| g++ \ |
| build-base && \ |
| cd /app && \ |
| git clone --depth 1 https://github.com/electerm/electerm-web.git && \ |
| cd electerm-web && \ |
| npm un @playwright/test chai playwright && \ |
| npm i ipv6 && \ |
| npm i && \ |
| npm audit fix --force && \ |
| npm run build && \ |
| cp .sample.env .env && \ |
| sed -i 's/HOST=.*/HOST=0.0.0.0/' .env && \ |
| sed -i 's/ENABLE_AUTH=.*/ENABLE_AUTH=1/' .env && \ |
| npm prune --production && \ |
| npm cache clean --force && \ |
| apk del build-base make g++ python3 git && \ |
| rm -rf /var/cache/apk/* && \ |
| mkdir -p /app/electerm-web/data/electerm_session_logs && \ |
| chown -R electerm:electerm /app/electerm-web && \ |
| chmod -R 777 /app/electerm-web/data |
|
|
| COPY sync_data.sh / |
| RUN chmod +x /sync_data.sh && \ |
| chown electerm:electerm /sync_data.sh |
|
|
| USER electerm |
| WORKDIR /app/electerm-web |
|
|
| ENV NODE_ENV=production |
| ENV HOST=0.0.0.0 |
| ENV ENABLE_AUTH=1 |
| ENV SERVER_SECRET=your-secret-key |
| ENV SERVER_PASS=your-password |
|
|
| EXPOSE 5577 |
|
|
| |
| CMD ["/sync_data.sh"] |