前言
使用golang開發,需要交叉編譯rpm。docker是不二之選,所以編寫了golang編譯打包鏡像。學習並記錄下dockerfile語法。
基本語法
CMD
CMD <command>
CMD ["<executeable>","<param1>","<param2>",...]
CMD ["<param1>","<param2>",...]
eg:
CMD echo 1
CMD ["echo","1"] 或者 CMD ["sh","可執行文件.sh",”參數1“]
CMD ["1","2"] 需要結合entrypoint使用作爲參數
ENTRYPOINT
ENTRYPOINT <command>
ENTRYPOINT ["<executeable>","<param1>","<param2>",...]
eg:
ENTRYPOINT echo 1
ENTRYPOINT ["echo","1"] 或者 ENTRYPOINT ["sh","可執行文件.sh",”參數1“]
區別
a.CMD與ENTRYPOINT 各自以最後一條生效,語法大致相同
b.CMD可以作爲ENTRYPOINT的默認參數
CMD ["默認參數1","默認參數2"]
ENTRYPOINT ["sh","可執行文件.sh"]
docker run ... 該鏡像
等同無配置
docker run ... 該鏡像 sh -c "可執行文件.sh 默認參數1 默認參數2"
c.CMD 默認參數docker run可覆蓋,沒有ENTRYPOINT情況可以覆蓋執行命令
CMD ["默認參數1","默認參數2"]
ENTRYPOINT ["sh","可執行文件.sh"]
docker run ... 該鏡像 test1 test2
等同無配置
docker run ... 該鏡像 sh -c "可執行文件.sh test1 test2"
CMD ["sh","可執行文件.sh","默認參數1","默認參數2"]
docker run ... 該鏡像 echo test1 test2
等同無配置
docker run ... 該鏡像 sh -c "echo test1 test2"
d.ENTRYPOINT可以使用 --entrypoint <executeable> <param1> <param2> 進行替換
CMD ["默認參數1","默認參數2"]
ENTRYPOINT ["sh","可執行文件.sh"]
docker run --entrypoint echo ... 該鏡像
等同無配置
docker run ... 該鏡像 sh -c "echo test1 test2"
通常用法
CMD ["默認參數1","默認參數2"]
ENTRYPOINT ["sh","可執行文件.sh"]