主題資源網(wǎng)站建設(shè)步驟推廣網(wǎng)站平臺
鏡像制作,
nginx的源碼包
把nginx源碼拷貝到容器內(nèi)
編譯要用到gcc make , 以及擴(kuò)展工具 pcre openssl
#? "pcre"? ? perl compatibal regulaer expression
剛開始,可以兩個終端,
一個手工操作(編譯安裝、拷貝、環(huán)境變量等),
一個寫Dockerfile
把手工操作的指令轉(zhuǎn)換成Dockerfile
./configure 配置的時候有兩個核心參數(shù),
]# ./configure --help | grep pcre
--without-pcre disable PCRE library usage
--with-pcre force PCRE library usage
--with-pcre=DIR set path to PCRE library sources
--with-pcre-opt=OPTIONS set additional build options for PCRE
--with-pcre-jit build PCRE with JIT compilation support]# ./configure --help | grep ssl
--with-http_ssl_module enable ngx_http_ssl_module
--with-mail_ssl_module enable ngx_mail_ssl_module
--with-stream_ssl_module enable ngx_stream_ssl_module
--with-stream_ssl_preread_module enable ngx_stream_ssl_preread_module
--with-openssl=DIR set path to OpenSSL library sources
--with-openssl-opt=OPTIONS set additional build options for OpenSSL
$PATH 是,指令尋址變量,可執(zhí)行命令全是依靠這個變量來查找的
要是變量里面能找到命令,就可以直接執(zhí)行,要是找不到,就不能執(zhí)行
把nginx的目錄加到變量里面就可以了。
export PATH=${PATH}:/usr/local/nginx/sbin # 拼接
Dockerfile文件中,把nginx放在前臺執(zhí)行
CMD ["nginx", "-g", "daemon off;"]
多階段鏡像制作,就是先做一個nginx編譯好的包,然后利用這個包做一個nginx鏡像
java的軟件,需要
git pull 下載代碼
maven 編譯
這時候才出來軟件包。
然后才能制作鏡像
這個叫多階段鏡像制作。
docker to docker 就是多階段鏡像制作,鏡像制作的多個階段
通過as參數(shù)給容器起名字
~]# cat nginx/Dockerfile
FROM mylinux:latest as builder
ADD nginx-1.22.1.tar.gz /
WORKDIR /nginx-1.22.1
RUN dnf -y install gcc make pcre-devel openssl-devel
RUN ./configure --prefix=/usr/local/nginx --with-pcre --with-http_ssl_module
RUN make && make install
RUN echo 'this is for nginx test' > /usr/local/nginx/html/index.htmlFROM mylinux:latest
RUN yum -y install pcre-devel openssl-devel && yum clean all
COPY --from=builder /usr/local/nginx /usr/local/nginx
ENV PATH=${PATH}:/usr/local/nginx/sbin
WORKDIR /usr/local/nginx
EXPOSE 80/tcp
CMD ["nginx", "-g", "daemon off;"]~]# docker inspect web | grep 172
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2",~]# curl http://172.17.0.2
this is for nginx test
上面的容器里面進(jìn)行編譯,把編譯好的軟件包拷貝到下面的鏡像里面進(jìn)行配置,制作鏡像
單階段做的話,鏡像會比較大。
為了把鏡像做的更加精簡,更加小,所以采用多階段制作鏡像,
就不把編譯工具放在鏡像里面。
編譯工具就是編譯工具,鏡像制作就是鏡像制作,
這個就是多階段鏡像制作。
兩個階段,第一個階段編譯,第二個階段鏡像制作。
兩個階段合起來,只需要源碼和Dockerfile就可以完成鏡像制作。
部署java程序的時候,經(jīng)常用到。
java的所有程序都得maven一下,不maven編譯的話,不是jar包,運(yùn)行不了。
所有的java程序都有一個編譯包
多階段制作鏡像的好處是,上面的編譯可以用的
和下面制作鏡像的時候,用的不是同一個鏡像。
上面的鏡像可能是有編譯工具的,代碼拉下來,直接編譯就行。
下面的打完包直接運(yùn)行,跟上面的沒關(guān)系。
多階段制作鏡像也叫docker to docker,能熟練運(yùn)用,可以快速做出自定義鏡像,方便適用于生產(chǎn)環(huán)境。