docker如何在一个容器内部署多个服务

2024-02-23 0 299
目录
  • 0.创建一个文件夹,将之前的httpd以及springBoot放进去
  • 1.合并dockerfile
    • httpd原docker
    • springBoot原docker
    • 合并说明
    • 合并 dockerfile
  • 2.打包
    • 3.启动

      原因是,我有一个springBoot服务需要写入httpd的目录,然后httpd提供链接给别人下载。之前的方法是,httpd和springBoot各一个容器,但是我们将镜像是部署在腾讯云上的,腾讯云会自动对每个容器分离不同的虚拟机,这样就导致,他们不能共享目录。所以只能写在一个容器内。

      思路,首先拿到你的httpd,以及你的springBoot,合并他们的Dockerfile,然后打包,然后启动的时候启动多个端口(httpd的端口和你服务的端口)

      0.创建一个文件夹,将之前的httpd以及springBoot放进去

      mkdir dahua-houduan
      cp -r httpd/ dahua-houduan/
      cp -r dahua/ dahua-houduan/

      1.合并dockerfile

      httpd原docker

      docker如何在一个容器内部署多个服务

      FROM docker.io/centos:7RUN echo "Asia/Shanghai" > /etc/timezoneRUN yum -y install httpdRUN mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.bakCOPY httpd/httpd.conf /etc/httpd/conf/httpd.confCOPY run.sh /run.shRUN chmod 777 /run.shEXPOSE 9999ENTRYPOINT [ "/run.sh" ]

      说明

      首先拉个镜像,然后下载httpd,然后改配置,运行sh脚本。

      这里我们要取的是,都取 ,sh脚本等一会儿进行修改

      springBoot原docker

      docker如何在一个容器内部署多个服务

      FROM java:8RUN echo "Asia/Shanghai" > /etc/timezoneEXPOSE 8087COPY dahua/config /configCOPY dahua/logs /logsCOPY dahua/dahua-1.0.jar /dahua-spring.jarCOPY dahua/Dockerfile /DokcerfileENTRYPOINT ["java","-jar","/dahua-spring.jar"]

      说明

      首先获取jdk环境,然后复制配置文件和日志,复制jar启动

      这里我们获取的是,除最后1行的所有

      合并说明

      建立一个Dockerfile

      docker如何在一个容器内部署多个服务

      注意from有个坑,如果有多个from只会保留最后一个from的内容

      合并 dockerfile

      FROM docker.io/centos:7RUN echo "Asia/Shanghai" > /etc/timezoneRUN yum -y install httpdRUN mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.bakCOPY httpd/httpd.conf /etc/httpd/conf/httpd.confCOPY httpd/run.sh /run.shRUN chmod 777 /run.shEXPOSE 9999

      FROM java:8EXPOSE 8087COPY dahua/config /configCOPY dahua/logs /logsCOPY dahua/dahua-1.0.jar /dahua-spring.jarCOPY dahua/Dockerfile /Dokcerfile

      ENTRYPOINT [ "/run.sh" ]

      之前的centos系统会消失,因为一个容器是一个虚拟机,from一次就相当于产生一个新的虚拟机,而虚拟机本质只能有一个虚拟环境。

      这里对上面红色的java8不进行from(删除jdk8),而是单独在centos7中单独部署jdk8

      说明

      jdk的安装就是把目录copy过去更新环境变量

      docker如何在一个容器内部署多个服务

      dockerFile新增内容为

      COPY jdk1.8 /jdk1.8.0_181ENV JAVA_HOME=/jdk1.8.0_181ENV PATH=$PATH:${JAVA_HOME}/bin

      完整docker镜像

      FROM docker.io/centos:7RUN echo "Asia/Shanghai" > /etc/timezoneRUN yum -y install httpdRUN mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.bakCOPY httpd/httpd.conf /etc/httpd/conf/httpd.confCOPY httpd/run.sh /run.shRUN chmod 777 /run.shEXPOSE 9999COPY jdk1.8 /jdk1.8.0_181ENV JAVA_HOME=/jdk1.8.0_181ENV PATH=$PATH:${JAVA_HOME}/bin

      EXPOSE 8087COPY dahua/config /configCOPY dahua/logs /logsCOPY dahua/dahua-1.0.jar /dahua-spring.jarCOPY dahua/Dockerfile /Dokcerfile

      ENTRYPOINT [ "/run.sh" ]

      sh脚本修改

      修改run.sh

      #!/bin/bashhttpdjava -jar dahua-spring.jar

      2.打包

      docker build -t test1 .

      3.启动

      docker run -p 8087:8087 -p 9999:9999 test1

      到此这篇关于docker一个容器内部署多个服务的文章就介绍到这了,更多相关docker多个服务内容请搜索悠久资源网以前的文章或继续浏览下面的相关文章希望大家以后多多支持悠久资源网!

      收藏 (0) 打赏

      感谢您的支持,我会继续努力的!

      打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
      点赞 (0)

      悠久资源 Linux服务器 docker如何在一个容器内部署多个服务 https://www.u-9.cn/server/linux/172678.html

      常见问题

      相关文章

      发表评论
      暂无评论
      官方客服团队

      为您解决烦忧 - 24小时在线 专业服务