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

 更新时间:2024年01月29日 10:42:12   作者:我要用代码向我喜欢的女孩表白  
这篇文章主要介绍了docker如何在一个容器内部署多个服务,思路是这样的首先拿到你的httpd,以及你的springBoot,合并他们的Dockerfile,然后打包,然后启动的时候启动多个端口(httpd的端口和你服务的端口),需要的朋友可以参考下

原因是,我有一个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

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环境,然后复制配置文件和日志,复制jar启动

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

合并说明

建立一个Dockerfile

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

合并 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 9999

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

ENTRYPOINT [ "/run.sh" ]

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

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

说明

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

dockerFile新增内容为

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}/bin

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

ENTRYPOINT [ "/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

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

相关文章

  • Docker buildx构建多平台镜像并推送到私有仓库的方法

    Docker buildx构建多平台镜像并推送到私有仓库的方法

    这篇文章主要介绍了Docker buildx构建多平台镜像并推送到私有仓库,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • Docker 仓库管理和Docker Dockerfile详解

    Docker 仓库管理和Docker Dockerfile详解

    仓库(Repository)是集中存放镜像的地方,以下介绍一下 Docker Hub,当然不止 docker hub,只是远程的服务商不一样,操作都是一样的,对Docker 仓库管理相关知识感兴趣的朋友一起看看吧
    2023-11-11
  • 部署OceanBase-ce全过程

    部署OceanBase-ce全过程

    这篇文章主要介绍了部署OceanBase-ce全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • docker 跨平台构建镜像的示例详解

    docker 跨平台构建镜像的示例详解

    这篇文章主要介绍了docker跨平台构建镜像的案例,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-09-09
  • Docker部署Nginx并修改配置文件的两种方式

    Docker部署Nginx并修改配置文件的两种方式

    这篇文章主要给大家介绍了关于Docker部署Nginx并修改配置文件的两种方式,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2023-01-01
  • 如何找到Docker容器(redis)中的持久化文件

    如何找到Docker容器(redis)中的持久化文件

    要查看Docker容器的dump.rdb和appendonly.aof文件(如果启用了AOF持久化)的位置,我们需要知道容器中Redis配置文件的内容或者容器的数据卷的挂载位置,本文给大家介绍如何找到Docker容器(redis)中的持久化文件,感兴趣的朋友一起看看吧
    2023-10-10
  • 常用的Docker基本命令及用法汇总

    常用的Docker基本命令及用法汇总

    Docker是一个用了一种新颖方式实现的超轻量虚拟机,在实现的原理和应用上还是和VM有巨大差别,专业的叫法是应用容器(Application Container)。今天给大家汇总介绍15个常用的docker命令以及用法
    2016-11-11
  • docker 容器中安装mysql服务的方法

    docker 容器中安装mysql服务的方法

    这篇文章主要介绍了docker容器中安装mysql服务的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • Ubuntu使用Docker部署Redis并实现远程访问本地数据库全过程

    Ubuntu使用Docker部署Redis并实现远程访问本地数据库全过程

    这篇文章主要给大家介绍了关于Ubuntu使用Docker部署Redis并实现远程访问本地数据库的相关资料,Redis远程连接是指通过网络连接到Redis服务器,从而可以在不同的机器问和操作Redis数据库,需要的朋友可以参考下
    2024-03-03
  • docker中CMD和ENTRYPOINT区别

    docker中CMD和ENTRYPOINT区别

    本文主要介绍了docker中CMD和ENTRYPOINT区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04

最新评论