|
FROM node:20-alpine3.21 |
|
ARG BUILD_DATE |
|
LABEL build-date=$BUILD_DATE |
|
LABEL maintainer="ZHAO Xudong <[email protected]>" |
|
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"] |