最近有項目需要上線,項目的各個服務都是由 golang 寫的。啟動服務直接運行編譯好的二進制文件就行答毫,于是準備使用 docker 來部署呛伴。
由于是二進制文件啟動勃痴,所以采用非常精簡的鏡像 alpine 。( 5M 左右)
編寫完 dockerfile磷蜀,構建鏡像無誤召耘,dockerfile 如下:
FROM alpine:latest
COPY target /data/
RUN chown -R games: /data/ && chmod +x /data/login
WORKDIR /data/
USER www
CMD ./myapp start
Dockerfile 邏輯很簡單,其中: myapp 是項目的二進制文件褐隆,位于 target 目錄下污它。
但是容器無法啟動,直接退出庶弃。于是進入容器中手動執(zhí)行命令衫贬,提示:
sh: myapp not found
檢查路徑和權限,都沒有問題歇攻。最后在網上找到了解決方法固惯,在 Dockerfile 中需要加入:
RUN mkdir /lib64 && ln -s /lib/libc.musl-x86_64.so.1 /lib64/ld-linux-x86-64.so.2