第一版
- springboot項目打包成jar
- 創(chuàng)建dockerfile,注釋掉的不用理會,沒什么 用,可以去掉
#[root@localhost docker-test]# cat dockerfile
FROM centos
#VOLUME ["/volume01","/volume02"]
#CMD yum -y install vim
COPY ./app.jar /home/app.jar
EXPOSE 8080
RUN yum install java-1.8.0-openjdk.x86_64 -y
ENTRYPOINT java -jar /home/app.jar --server.port=8080
#ENV MYPASS 123456
#CMD echo $MYPASS
CMD /bin/bash
RUN 用來安裝軟件,ENTRYPOINT 用來在容器啟動后運行的命令,這里就是運行java
- 構(gòu)建鏡像,
youname/jdk自定義鏡像名稱,別忽略最后的那個點號
docker build -f dockerfile -t youname/jdk .
- 運行
docker run -d --name myapp -p 80:8080 youname/jdk

運行
-
訪問
返回正常 -
我的springboot項目只是一個簡單的演示,只有首頁
springboot
第二版
上面的運行后,在使用docker attach 或者 docker exec 之類的命令進入后停留在springboot的頁面,無法操作其他的,只能結(jié)束ctrl+c,這樣就導致容器結(jié)束運行;因為容器如果沒有前臺命令運行的話就自動退出,例如,如果手動在centos安裝redis后,即使后臺運行了,也是會退出;
解決方法:使用ENTRYPOINT指令,執(zhí)行一連串的shell命令(放到一個腳本中),該指令dockerfile中只能有一個;
- 修改dockerfile
FROM centos
VOLUME ["/home/docker-test/conf:/home/conf/","/home/docker-test/data:/home/data"]
EXPOSE 8080
RUN yum install java-1.8.0-openjdk.x86_64 redis -y && systemctl enable redis
#CMD yum -y install vim
COPY ./data/app.jar /home/data/app.jar
COPY ./data/start.sh /home/data/start.sh
COPY ./conf/redis.conf /home/conf/redis.conf
RUN chmod +x /home/data/start.sh
#RUN redis-server /home/conf/redis.conf
#ENTRYPOINT redis-server /home/conf/redis.conf && nohup java -jar /home/data/app.jar --server.port=8080 > /home/data/out.log 2>&1 & && /bin/bash
ENTRYPOINT ["sh","/home/data/start.sh"]
- 增加start.sh腳本
#!/bin/sh
redis-server /home/conf/redis.conf
nohup java -jar /home/data/app.jar --server.port=8080 > /dev/null 2>&1 &
/bin/bash
#依次運行
- 固定不變的命令放到前面,比如下載jdk,否則每次修改dockerfile構(gòu)建鏡像都要重新下載一次;不理解參考docker鏡像層的概念,或者使用docker image history 你的鏡像 查看構(gòu)建歷史
第三版
- centos + node
FROM centos
ADD ./node-v12.18.3-linux-x64.tar.xz /usr/local/
RUN chmod +x /usr/local/node-v12.18.3-linux-x64/bin/node
RUN chmod +x /usr/local/node-v12.18.3-linux-x64/bin/npm
RUN ln -s /usr/local/node-v12.18.3-linux-x64/bin/node /usr/bin/node
RUN ln -s /usr/local/node-v12.18.3-linux-x64/bin/npm /usr/bin/npm
#CMD node -v
RUN npm config set registry https://registry.npm.taobao.org
ENTRYPOINT ["/bin/bash"]
- 其中
node-v12.18.3-linux-x64.tar.xz是需要提前下載好

