本文以将 rustdesk-server-demo 制作为 docker 为例,讲述 docker 镜像制作过程。
安装好 rust 语言后,编译 rustdesk-server-demo:
cd ~/github/rustdesk-server-demo
mkdir -p target/releae
cargo build --release
得到可直接执行的二进制文件路径为 ./target/release/rustdesk-server
可以验证可执行文件是否正确:
IP=127.0.0.1 ./target/release/rustdesk-server
server.Dockerfile:
FROM ubuntu:bionic
LABEL maintainer="jingpingyin@xxx.com"
WORKDIR /root
RUN apt update -y && \
apt install -y --no-install-recommends \
curl wget nasm yasm unzip zip sudo jq vim less
COPY ./target/release/rustdesk-server /root
COPY ./entrypoint.sh /root
RUN sudo chmod 777 entrypoint.sh
CMD bash /root/entrypoint.sh
容器启动后要执行的脚本 entrypoint.sh:
#!/bin/bash -e
mkdir -p /root/logs
/root/rustdesk-server >> "/root/logs/server_$(date +%Y%m%d-%H%M).log" 2>&1
执行二进制文件 rustdsk-server,并将其 log 重定向到容器中的 /root/logs 目录下。
制作 docker 镜像:
docker build -t 镜像仓库/xremote-server:demo -f server.Dockerfile .
上传 docker 镜像到指定仓库:
docker push 镜像仓库/xremote-server:demo
以上两条命令中可以不指定镜像仓库,会默认上传到官方的仓库中。
docker run 会自动拉取镜像并启动容器:
IMAGE_FULL_TAG=镜像仓库/xremote-server:demo
CONTAINER_NAME="rustdesk-server-demo"
HOST_SIGNALING_PROT=21116
HOST_RELAY_PROT=21117
CONTAINER_SIGNALING_PORT=21116
CONTAINER_RELAY_PORT21117
IP=127.0.0.1
docker run -itd --restart=always --net bridge \
--name "${CONTAINER_NAME}" \
-p "${HOST_SIGNALING_PROT}:${CONTAINER_SIGNALING_PORT}/udp" \
-p "${HOST_SIGNALING_PROT}:${CONTAINER_SIGNALING_PORT}" \
-p "${HOST_RELAY_PROT}:${CONTAINER_RELAY_PORT}" \
-e IP="${IP}" \
-v "${ROOT_DIR}/logs/${CONTAINER_NAME}/:/root/logs" \
${IMAGE_FULL_TAG}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。