docker常用技巧
镜像打包
** Dockerfile ** 文件编写
案例:
# 编译arm盒子镜像
FROM --platform=linux/arm64/v8 golang:1.18-alpine3.15 as builder
WORKDIR /usr/src/app
COPY . .
ENV GOPROXY https://goproxy.cn
ENV CGO_ENABLED 0
RUN go mod tidy
RUN CGO_ENABLED=1 go build -v -o /usr/local/bin/app
FROM --platform=linux/arm64/v8 alpine:3.15.4
WORKDIR /data
RUN mkdir "config"; \
mkdir "logs"; \
mkdir "resource"; \
sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories; \
apk update && apk upgrade && apk add vim && apk add --no-cache tzdata; \
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime; \
echo "Asia/Shanghai" > /etc/timezone; \
rm -rf /var/cache/apk/*
COPY --from=builder /usr/local/bin/app /data
COPY --from=builder /usr/src/app/config/config.toml /data/config
ENTRYPOINT ["./app", "-c", "/data/config/config.toml"]
构建镜像 并推送至仓库
案例:
docker buildx build --push --platform linux/arm64/v8 -t hub.wesais.cn/edge/monibuca-arm-v8:v3.0 -f DockerfileArmV8 .
实例构建与运行
docker run -d --name go-blog \
--restart=always \
-p 18081:8080 \
-v /data/go-blog/data:/data/data \
hub.wesais.cn/edge/go-blog-arm:v.22.1210.01 \
-server 0.0.0.0:8080
容器实例编排
……