docker 運行 springboot項目

第一版

  1. springboot項目打包成jar
  2. 創(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

  1. 構(gòu)建鏡像,youname/jdk自定義鏡像名稱,別忽略最后的那個點號
docker build -f dockerfile -t youname/jdk . 
  1. 運行
docker run -d --name myapp -p 80:8080 youname/jdk
運行
  1. 訪問


    返回正常
  2. 我的springboot項目只是一個簡單的演示,只有首頁


    springboot

第二版

上面的運行后,在使用docker attach 或者 docker exec 之類的命令進入后停留在springboot的頁面,無法操作其他的,只能結(jié)束ctrl+c,這樣就導致容器結(jié)束運行;因為容器如果沒有前臺命令運行的話就自動退出,例如,如果手動在centos安裝redis后,即使后臺運行了,也是會退出;
解決方法:使用ENTRYPOINT指令,執(zhí)行一連串的shell命令(放到一個腳本中),該指令dockerfile中只能有一個;

  1. 修改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"]

  1. 增加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
#依次運行
  1. 固定不變的命令放到前面,比如下載jdk,否則每次修改dockerfile構(gòu)建鏡像都要重新下載一次;不理解參考docker鏡像層的概念,或者使用docker image history 你的鏡像 查看構(gòu)建歷史

第三版

  1. 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"]

  1. 其中node-v12.18.3-linux-x64.tar.xz是需要提前下載好
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容