docker如何在一個容器內(nèi)部署多個服務(wù)
原因是,我有一個springBoot服務(wù)需要寫入httpd的目錄,然后httpd提供鏈接給別人下載。之前的方法是,httpd和springBoot各一個容器,但是我們將鏡像是部署在騰訊云上的,騰訊云會自動對每個容器分離不同的虛擬機,這樣就導(dǎo)致,他們不能共享目錄。所以只能寫在一個容器內(nèi)。
思路,首先拿到你的httpd,以及你的springBoot,合并他們的Dockerfile,然后打包,然后啟動的時候啟動多個端口(httpd的端口和你服務(wù)的端口)
0.創(chuàng)建一個文件夾,將之前的httpd以及springBoot放進去
mkdir dahua-houduan cp -r httpd/ dahua-houduan/ cp -r dahua/ dahua-houduan/
1.合并dockerfile
httpd原docker
FROM docker.io/centos:7
RUN echo "Asia/Shanghai" > /etc/timezone
RUN yum -y install httpd
RUN mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.bak
COPY httpd/httpd.conf /etc/httpd/conf/httpd.conf
COPY run.sh /run.sh
RUN chmod 777 /run.sh
EXPOSE 9999
ENTRYPOINT [ "/run.sh" ]
說明
首先拉個鏡像,然后下載httpd,然后改配置,運行sh腳本。
這里我們要取的是,都取 ,sh腳本等一會兒進行修改
springBoot原docker
FROM java:8
RUN echo "Asia/Shanghai" > /etc/timezone
EXPOSE 8087
COPY dahua/config /config
COPY dahua/logs /logs
COPY dahua/dahua-1.0.jar /dahua-spring.jar
COPY dahua/Dockerfile /Dokcerfile
ENTRYPOINT ["java","-jar","/dahua-spring.jar"]
說明
首先獲取jdk環(huán)境,然后復(fù)制配置文件和日志,復(fù)制jar啟動
這里我們獲取的是,除最后1行的所有
合并說明
建立一個Dockerfile
注意from有個坑,如果有多個from只會保留最后一個from的內(nèi)容
合并 dockerfile
FROM docker.io/centos:7
RUN echo "Asia/Shanghai" > /etc/timezone
RUN yum -y install httpd
RUN mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.bak
COPY httpd/httpd.conf /etc/httpd/conf/httpd.conf
COPY httpd/run.sh /run.sh
RUN chmod 777 /run.sh
EXPOSE 9999FROM java:8
EXPOSE 8087
COPY dahua/config /config
COPY dahua/logs /logs
COPY dahua/dahua-1.0.jar /dahua-spring.jar
COPY dahua/Dockerfile /DokcerfileENTRYPOINT [ "/run.sh" ]
之前的centos系統(tǒng)會消失,因為一個容器是一個虛擬機,from一次就相當(dāng)于產(chǎn)生一個新的虛擬機,而虛擬機本質(zhì)只能有一個虛擬環(huán)境。
這里對上面紅色的java8不進行from(刪除jdk8),而是單獨在centos7中單獨部署jdk8
說明
jdk的安裝就是把目錄copy過去更新環(huán)境變量
dockerFile新增內(nèi)容為
COPY jdk1.8 /jdk1.8.0_181
ENV JAVA_HOME=/jdk1.8.0_181
ENV PATH=$PATH:${JAVA_HOME}/bin
完整docker鏡像
FROM docker.io/centos:7
RUN echo "Asia/Shanghai" > /etc/timezone
RUN yum -y install httpd
RUN mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.bak
COPY httpd/httpd.conf /etc/httpd/conf/httpd.conf
COPY httpd/run.sh /run.sh
RUN chmod 777 /run.sh
EXPOSE 9999
COPY jdk1.8 /jdk1.8.0_181
ENV JAVA_HOME=/jdk1.8.0_181
ENV PATH=$PATH:${JAVA_HOME}/binEXPOSE 8087
COPY dahua/config /config
COPY dahua/logs /logs
COPY dahua/dahua-1.0.jar /dahua-spring.jar
COPY dahua/Dockerfile /DokcerfileENTRYPOINT [ "/run.sh" ]
sh腳本修改
修改run.sh
#!/bin/bash
httpd
java -jar dahua-spring.jar
2.打包
docker build -t test1 .
3.啟動
docker run -p 8087:8087 -p 9999:9999 test1
到此這篇關(guān)于docker一個容器內(nèi)部署多個服務(wù)的文章就介紹到這了,更多相關(guān)docker多個服務(wù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker-compose部署nacos 2.2.3的詳細(xì)過程
這篇文章主要介紹了docker-compose部署nacos 2.2.3的詳細(xì)過程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-11-11Docker如何創(chuàng)建一個Jar服務(wù)容器
這篇文章主要介紹了Docker如何創(chuàng)建一個Jar服務(wù)容器問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08使用 Docker 在 Ubuntu 上部署 FTP 服務(wù)器
本文詳細(xì)介紹了如何在Ubuntu系統(tǒng)上通過Docker部署FTP服務(wù)器的步驟,包括安裝Docker、拉取vsftpd鏡像以及運行FTP容器等,通過這些步驟,用戶可以在提供的免費云服務(wù)器上快速搭建起一個安全高效的FTP服務(wù),適合小型項目或個人使用,感興趣的朋友跟隨小編一起看看吧2024-10-10docker拉取clickhouse鏡像的方法實現(xiàn)
本文主要介紹了docker拉取clickhouse鏡像的方法實現(xiàn),解決從DockerHub拉取鏡像時的網(wǎng)絡(luò)連接問題,具有一定的參考價值,感興趣的可以了解一下2025-03-03Armbian5.9.0安裝docker及部署可視化portainer的詳細(xì)教程
這篇文章主要介紹了Armbian5.9.0安裝docker及部署可視化portainer的詳細(xì)教程,通過?ssh?進去?Armbian?系統(tǒng)后,輸入相應(yīng)代碼,按提示輸入y,等待安裝完成即可,需要的朋友可以參考下2022-05-05