定义部分变量
a=test_image
v=alpine:3.18.2
p=8080
mkdir -p /opt/$a && cd /opt/$a
获取alpine镜像
docker pull $v
写入alpine源
cat > repositories << EOF
#/media/cdrom/apks
http://mirrors.ustc.edu.cn/alpine/v3.18/main
http://mirrors.ustc.edu.cn/alpine/v3.18/community
#http://mirrors.ustc.edu.cn/alpine/edge/main
#http://mirrors.ustc.edu.cn/alpine/edge/community
#http://mirrors.ustc.edu.cn/alpine/edge/testing
EOF
写入Dockerfile
cat > Dockerfile << EOF
from $v
copy repositories /etc/apk/repositories
RUN apk add --no-cache mysql-dev py3-numpy py3-pandas py3-pip py3-mysqlclient py3-wheel
RUN pip config set global.index-url http://custom_pypi_source/simple/ \
&& pip config set global.trusted-host custom_pypi_source \
&& pip config set global.extra-index-url https://pypi.tuna.tsinghua.edu.cn/simple/ \
&& pip config set global.no-cache-dir true \
&& pip config set global.disable-pip-version-check true \
&& pip install custom_library
RUN pip install custom_library>=0.1.1
WORKDIR /opt/$a
EXPOSE $p
CMD sh
EOF
- alpine提供了很多python库的编译包,可以直接安装无需编译;
- 第二次pip install是为了更新方便
build image
docker build -t $a .
快速测试命令
docker rm -f $a
docker run -itd \
--restart=always \
--name $a \
-v /opt/$a:/opt/$a \
-w /opt/$a \
-p $p:$p \
-e TZ=Asia/Shanghai \
$v