[feat] add docker scripts

This commit is contained in:
dijunkun
2025-10-20 01:30:28 +08:00
parent a6ac412303
commit 4e6f52a578
4 changed files with 88 additions and 2 deletions

View File

@@ -36,4 +36,11 @@ xmake f -m debug/release
# 示例
xmake b -vy crossdesk_server
```
更多使用方法可参考 [Xmake官方文档](https://xmake.io/guide/quick-start.html) 。
更多使用方法可参考 [Xmake官方文档](https://xmake.io/guide/quick-start.html) 。
## 构建镜像
```
cd docker
sudo docker build -t image-name .
```

View File

@@ -34,4 +34,11 @@ xmake f -m debug/release
# Example
xmake b -vy crossdesk_server
```
For more information, please refer to the [official Xmake documentation](https://xmake.io/guide/quick-start.html) .
For more information, please refer to the [official Xmake documentation](https://xmake.io/guide/quick-start.html) .
## Build Docker Image
```
cd docker
sudo docker build -t image-name .
```

21
docker/dockerfile Normal file
View File

@@ -0,0 +1,21 @@
FROM crossdesk/crossdesk-server-base:latest
# create certificate directory and generate a self-signed TLS certificate
RUN mkdir -p /opt/turnserver && \
cd /opt/turnserver && \
# generate private key
openssl genrsa -out turn_server_pkey.pem 2048 && \
# generate self-signed certificate (valid for 10 years)
openssl req -x509 -new -nodes \
-key turn_server_pkey.pem \
-sha256 -days 3650 \
-subj "/C=CN/ST=Beijing/L=Beijing/O=SelfSigned/OU=IT/CN=coturn.local" \
-out turn_server_cert.pem && \
chmod 600 /opt/turnserver/turn_server_pkey.pem
# copy entrypoint script into the image
COPY start.sh /start.sh
RUN chmod +x /start.sh
# Set the container entrypoint
ENTRYPOINT ["/start.sh"]

51
docker/start.sh Normal file
View File

@@ -0,0 +1,51 @@
#!/bin/bash
set -e
# environment variables for coturn
CONF_FILE=/etc/coturn/turnserver.conf
CERT_FILE=/opt/turnserver/turn_server_cert.pem
PKEY_FILE=/opt/turnserver/turn_server_pkey.pem
# environment variables for crossdesk-server
CROSSDESK_SERVER_PORT=${CROSSDESK_SERVER_PORT:-9090}
# check environment variables
if [ -z "$EXTERNAL_IP" ] || [ -z "$INTERNAL_IP" ]; then
echo "Error: EXTERNAL_IP and INTERNAL_IP must be set."
echo "Example: docker run -e EXTERNAL_IP=1.2.3.4 -e INTERNAL_IP=10.0.0.5 crossdesk-server"
exit 1
fi
# generate coturn configuration file
mkdir -p /etc/coturn
cat > "$CONF_FILE" <<EOF
# coturn auto-generated configuration
listening-port=3478
listening-ip=${INTERNAL_IP}
external-ip=${EXTERNAL_IP}
min-port=30000
max-port=60000
verbose
fingerprint
lt-cred-mech
user=crossdesk:crossdeskpw
realm=crossdesk
cert=${CERT_FILE}
pkey=${PKEY_FILE}
log-file=/crossdesk-server/logs/turn.log
no-cli
EOF
echo "generated coturn config at $CONF_FILE"
echo "using certificate: $CERT_FILE"
# start coturn in the background
exec turnserver -c "$CONF_FILE" &
# start crossdesk-server as main foreground process
echo "Starting crossdesk-server..."
./crossdesk-server/crossdesk_server \
${CROSSDESK_SERVER_PORT} \
/crossdesk-server/certs/ \
/crossdesk-server/db/crossdesk_server.db \
/crossdesk-server/logs