电脑需要先安装一下docker
1.配置交叉编译工具
工具链接: rust-musl-cross
我这里用的是x86_64-musl,所以安装命令为
docker pull messense/rust-musl-cross:x86_64-musl
在~/.zshrc设置别名
alias rust-musl-builder='docker run --rm -it -v "$(pwd)":/home/rust/src messense/rust-musl-cross:x86_64-musl'
以后就可以用这个命令来编译了
rust-musl-builder cargo build --release
编译后会在项目目录下生成执行可执行文件,我这里像这样

2. 编写Dockerfile
d_blog替换为项目名字
FROM alpine:latest
ENV TZ Asia/Shanghai
RUN apk add tzdata && cp /usr/share/zoneinfo/${TZ} /etc/localtime \
&& echo ${TZ} > /etc/timezone \
&& apk del tzdata
WORKDIR /home/app-dir
COPY ./target/x86_64-unknown-linux-musl/release/d_blog ./d_blog
COPY ./data ./data
COPY ./config ./config
COPY ./assets ./assets
COPY ./logs ./logs
ENV LANG en US.UTF-8
ENV LANGUAGE en US:en
ENV LC ALL en US.UTF-8
EXPOSE 5800
ENTRYPOINT ["/home/app-dir/d_blog"]
这是我的项目结构

3.打包镜像
项目根目录下执行 hello_rust 镜像名称
sudo docker build -t hello_rust .
执行过程如下图

生成的镜像只有30多M

可以看到可执行文件和一些配置文件已经拷贝到镜像里面去了

4.执行
docker run --name test -it hello_rust:latest
hello_rust:latest : 镜像名称
test: 容器名称
可以看到已经跑起来了

在orbStack也可以看到
