golang程序使用alpine编译出最小arm镜像
基础镜像准备
如果想要打arm架构的镜像就在arm的机器上执行,如果想打amd的镜像就在amd机器上执行, 会自己根据机器的架构来下载基础镜像。
这里我以arm架构的机器为例
查看Dockerfile
FROM alpine:latest
# 设置时区为上海
RUN apk add tzdata && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone \
&& apk del tzdata
编译镜像命令,把它做为基础镜像
docker build -t 192.168.1.187/library/alpine-arm64-go:v1.0 .
golang程序编译镜像
编译Dockerfile如下
FROM 192.168.1.187/library/alpine-arm64-go:v1.0
COPY analysis /opt/analysis
RUN chmod +x /opt/analysis
ENTRYPOINT ./opt/analysis -MQTT_IP $MQTT_IP -MQTT_PORT $MQTT_PORT -MQTT_USERNAME $MQTT_USERNAME -MQTT_PASSWORD $MQTT_PASSWORD
编译命令
docker build -t 192.168.1.187/library/arm64-analysis:v1.0 .
运行
在前面的Dockerfile中,我们加入的环境变量,启动的时候需要设置环境变量启动
docker run -d --name analysis --restart=always -e MQTT_IP=192.168.1.188 -e MQTT_PORT=1883 -e MQTT_USERNAME=admin -e MQTT_PASSWORD=liang_2023 192.168.1.187/library/arm64-analysis:v1.0