docker自己部署一個項目


老祖宗的話說得好呀:實踐出真知

自己打個簡單的鏡像運行  遇到了一堆破問題

 

學習docker主要在菜鳥教程  https://www.runoob.com/docker/docker-container-usage.html

知識點壹

第一個端口是真實機器的,第二個端口是docker的

docker run -p 13138:13131 -d lastt

***************************************************************************************************

知識點貳

我們自己啟動jar包時  喜歡java -jar

但是這個命令放在docker文件里,總是發生啟動后立即阿掛掉

 

這是一篇博主的總結

https://blog.csdn.net/do_it_/article/details/80014321

最近在看docker如何讓容器在啟動時直接運行某些進程,后來發現Dockerfile可以在容器啟動的時候指定容器運行命令。

CMD指定,但是每個Dockerfile只能有一條CMD指令,如果指定了多條CMD指定,只有最后一條會被執行。

於是就想了一個辦法,在寫了一個腳本,在腳本里面啟動多個進程,在Dockerfile里運行這個腳本。

最后證明這個方法是可行的,在實驗過程中遇到一個問題,容器啟動后會馬上停止。

經查閱資料:

Docker容器同時只能管理一個進程,如果這個進程退出那么容器也就退出了,但這不表示容器只能運行一個進程(其他進程可在后台運行),但是要使容器不退出必須有一個前台執行的進程。

解決方法:

腳本中最后一個進程一定要用前台運行方式即在進程最后不加&(&表示后台運行),否則容器會退出。
————————————————
版權聲明:本文為CSDN博主「do_it_」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/do_it_/article/details/80014321

 

 

在學習docker的時候 遇到一個坑 就是當docker容器中沒有前台運行的程序的時候 docker會認為這個容器沒有工作內容會自動關閉這個容器

解決方法:
在寫dockerfile的時候 記得留一個在前台執行的任務 特別是在做那種一般在后台運行的服務 如mysql這樣的 需要讓他在前台運行 mysqld.service

這是個mysql的坑 自己還沒碰到過

 

***************************************************************************************************

 

說回部署

https://blog.csdn.net/dhaiuda/article/details/82228186

我是按照這個搭的,但是犯了個傻 我的項目端口是13131,怎么映射初始端口肯定也是這個呀,我又沒在啟動命令里指定別的端口,當時我為啥會想成docker啟動的spring項目的端口會改

真是腦抽

 

解決了問題后發現,這個是順暢的,

我在解決這個問題的時候   用了https://www.jianshu.com/p/397929dbc27d這個博主的內容

3. 編寫Dockerfile文件

# Docker image for springboot file run
# VERSION 0.0.1
# Author: eangulee
# 基礎鏡像使用java
FROM java:8
# 作者
MAINTAINER eangulee <eangulee@gmail.com>
# VOLUME 指定了臨時文件目錄為/tmp。
# 其效果是在主機 /var/lib/docker 目錄下創建了一個臨時文件,並鏈接到容器的/tmp
VOLUME /tmp 
# 將jar包添加到容器中並更名為app.jar
ADD demo-0.0.1-SNAPSHOT.jar app.jar 
# 運行jar包
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

 

解釋下這個配置文件:

VOLUME 指定了臨時文件目錄為/tmp。其效果是在主機 /var/lib/docker 目錄下創建了一個臨時文件,並鏈接到容器的/tmp。改步驟是可選的,如果涉及到文件系統的應用就很有必要了。/tmp目錄用來持久化到 Docker 數據文件夾,因為 Spring Boot 使用的內嵌 Tomcat 容器默認使用/tmp作為工作目錄
項目的 jar 文件作為 “app.jar” 添加到容器的
ENTRYPOINT 執行項目 app.jar。為了縮短 Tomcat 啟動時間,添加一個系統屬性指向 “/dev/./urandom” 作為 Entropy Source

如果是第一次打包,它會自動下載java 8的鏡像作為基礎鏡像,以后再制作鏡像的時候就不會再下載了。

 

 

Docker搭建MySQL主從集群

這是愛寶貝寫的一個docker部署mysql的一個文檔,這是回頭補的總結,第一次部署時候應該是noproblem的,很久沒上服務器了

又折騰了一哈docker 重啟了  要重新啟動這個主從服務,照搬的命令是不行的

去掉了name

docker run  --privileged=true -v /home/mysql/master-data:/var/lib/mysql -p 13306:3306 -e MYSQL_ROOT_PASSWORD=root -d xiaochunping/mysql-master

去掉了name和link

docker run  --privileged=true -v /home/mysql/slave-data:/var/lib/mysql -p 13307:3306  -e MYSQL_ROOT_PASSWORD=root -d xiaochunping/mysql-slave

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM