由于每次都使用别人的容器,总是觉得甜糖没有量,就想自己搭一个容器跑一下试试,试了用centos:7作为基础镜像无法运行,使用ubuntu可以正常运行甜糖
1、拉取基础镜像
可以使用常用的一些基础镜像为底层,比如debian、centos、ubuntu等等,如果基础镜像不适用你的应用程序,可以更换,这里以ubuntu为示例
docker pull ubuntu:latest
2、创建dockerfile
首先可以看一下官方部署甜糖脚本的gitee项目:https://gitee.com/shenzhen-sweet-sugar/ttnode-auto-deploy
安装脚本:https://gitee.com/shenzhen-sweet-sugar/ttnode-auto-deploy/blob/master/setup.sh
脚本内容如下:
cache="/mnt/data/ttnode"
case $1 in
-c=*|--cache=*)
cache="${1#*=}"
;;
*)
;;
esac
apt-get update -y
apt-get install -y wget ca-certificates qrencode unzip tar
apt-get upgrade tar unzip
manager_x86="ttnode-manager-x86"
manager_arm32="ttnode-manager-arm32"
manager_arm64="ttnode-manager-arm64"
arm32_url="https://gitee.com/shenzhen-sweet-sugar/ttnode-auto-deploy/attach_files/1104920/download/ttnode-manager-arm32.tar.gz"
arm64_url="https://gitee.com/shenzhen-sweet-sugar/ttnode-auto-deploy/attach_files/1104919/download/ttnode-manager-arm64.tar.gz"
x86_url="https://gitee.com/shenzhen-sweet-sugar/ttnode-auto-deploy/attach_files/1104921/download/ttnode-manager-x86.tar.gz"
deploy_dir="/usr/node"
manager=manager_arm32
platform=$(uname -a)
case $platform in
*x86*)
url=$x86_url
manager=$manager_x86
;;
*amd64*)
url=$x86_url
manager=$manager_x86
;;
*armv8*)
url=$arm64_url
manager=$manager_arm64
;;
*arm64*)
url=$arm64_url
manager=$manager_arm64
;;
*aarch64*)
url=$arm64_url
manager=$manager_arm64
;;
*)
url=$arm32_url
manager=$manager_arm32
esac
echo $url
tar_manager="$manager.tar.gz"
mkdir -p /opt/app
mkdir -p $cache
rm -rf $deploy_dir
rm -rf /usr/$tar_manager
cd /usr
wget $url
tar -xvf $tar_manager
mv $manager node
cd /usr/node
echo $cache > config.txt
chmod +x ttnode_manager
# 开机启动设置
wget "https://gitee.com/shenzhen-sweet-sugar/ttnode-auto-deploy/raw/master/rc.local"
cp $deploy_dir/rc.local /etc/rc.local
chmod +x /etc/rc.local
systemctl daemon-reload
/etc/rc.local
可以看到步骤大概如下:
第一步根据系统类型下载不同的压缩包,我这里是x86_64的系统,所以下载ttnode-manager-x86.tar.gz
第二步将ttnode-manager-x86.tar.gz解压到/usr并重命名为node
第三步安装所需命令
apt-get update -y
apt-get install -y wget ca-certificates qrencode unzip tar
apt-get upgrade tar unzip
第四步创建所需文件夹
mkdir -p /opt/app
mkdir -p /mnt/data/ttnode
第五步将缓存目录写入配置文件
echo /mnt/data/ttnode > /usr/node/config.txt
赋权启动脚本
chmod 777 /usr/node/ttnode_manager
启动脚本
./ttnode_manager
根据如上步骤编写Dockerfile如下:
# 使用基础镜像CentOS 7
#FROM centos:7
FROM ubuntu:latest
# 第一步:更新系统并安装所需命令
RUN apt-get update -y && \
apt-get install -y wget ca-certificates qrencode unzip tar
# 第二步:将ttnode-manager-x86.tar.gz自动解压到/usr并重命名为node
ADD ttnode-manager-x86.tar.gz /usr/
RUN mv /usr/ttnode-manager-x86 /usr/node
# 第三步:创建所需文件夹
RUN mkdir -p /opt/app && \
mkdir -p /mnt/data/ttnode
# 第四步:将缓存目录写入配置文件
RUN echo "/mnt/data/ttnode" > /usr/node/config.txt
# 第五步:赋权启动脚本
RUN chmod 777 /usr/node/ttnode_manager
#指定脚本工作目录
WORKDIR /usr/node
# 启动脚本
ENTRYPOINT ["./ttnode_manager"]
#CMD ["sleep", "infinity"]
3、构建镜像
执行如下命令使用Dockerfile构建出自己的镜像
docker build -t mynode:1.0 .
mynode:构建镜像的名称
1.0:镜像版本 如果不给则为latest,即最新版本
4、创建docker-compose启动脚本
由于不想给太大的内存,所以可以在脚本中设置内存限制,这里设置为2g
version: '3'
services:
ttnode:
image: mynode
container_name: ttnode
network_mode: host
restart: always
deploy:
resources:
limits:
memory: 2g
volumes:
- /nodetemp:/mnt/data/ttnode
5、使用兼容模式设置启动容器
由于使用了内存限制,所以需要使用兼容模式启动docker-compose,否则内存限制不生效
docker-compose --compatibility up -d
–compatibility:使用兼容性运行