V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
RedBeanIce
V2EX  ›  Java

docker 项目资料全部打包

  •  
  •   RedBeanIce · 10 天前 · 2492 次点击
    我对于 docker 还是不太熟悉。
    公司目前是单体服务,每个客户都是一套部署环境。

    工程部的人提了一个需求,希望更快的给客户演示+搭建生产系统提供给客户使用。
    问题:工程部在部署服务的时候太麻烦了。希望方便部署。

    1 ,目前领导想的是,将 springboot+mysql+redis+ng+前端全部打包到一个镜像里面去,
    那么工程部在运行的时候,安装 docker desktop ,pull ,run 即可
    2 ,我想的是 docker compose ,

    我想问的问题:
    1 ,到底选择打包到一个镜像,或者是 docker compose ,或者是其他的方案呢?????
    20 条回复    2024-05-11 15:47:00 +08:00
    Karte
        1
    Karte  
       10 天前   ❤️ 1
    compose.
    打包进一个的话容器删了就等于全停了, 而且无法监控所有服务的状态.
    docker 判断容器存货就看最后一个指令, 也就是最后一个指令的 PID. 如果这个 PID 存货就是 RUNNING, 如果挂了就是 STOP.
    假设你都打包进去了, 而 PID 则是一个 top 指令. 这时只要任意一个服务挂了你是不知道的, 因为 PID 对应的进程依旧跑着. 如果你想排查, 不好意思, docker logs 的日志都是 PID 进程的. 你想看只能进到容器里, 或者将日志映射到宿主机上.
    wunonglin
        2
    wunonglin  
       10 天前   ❤️ 1
    docker compose
    wunonglin
        3
    wunonglin  
       10 天前   ❤️ 1
    生产部署用 k3s 、k8s ,演示部署直接 docker compose 就行。all in one = all in boom
    juzisang
        4
    juzisang  
       10 天前   ❤️ 2
    docker compose 你提供 docker-compose.yaml 即可,部署的人 docker compose up -d 就行,比 docker run 加一堆参数更方便,而且还能做版本管理。
    iyiluo
        5
    iyiluo  
       10 天前   ❤️ 1
    肯定是 compose ,compose 也可以一键,全部装一起你得自己做镜像,安装一堆坑还违反了 docker 规范
    Karte
        6
    Karte  
       10 天前
    对了, 你这个是 Docker 相关的话题, 建议把话题转到 /go/docker. 而不是 /go/java
    RedBeanIce
        7
    RedBeanIce  
    OP
       10 天前
    感谢各位,我去试试 docker compose 。哈哈哈哈

    @Karte
    @wunonglin
    @juzisang
    @iyiluo
    RedBeanIce
        8
    RedBeanIce  
    OP
       10 天前
    @Karte 好的,,我挪一下位置去,,主要我还是个 javaer 为主。。
    RedBeanIce
        9
    RedBeanIce  
    OP
       10 天前
    @Karte 过时间了,,,,超过 move 的时间了。。。
    stille
        10
    stille  
       10 天前
    用 docker compose
    直接把 nginx 配置文件,mysql redis 等数据用 -v ./xxx 挂在到本地目录,压缩保存整个项目文件就行了。
    chuck1in
        11
    chuck1in  
       10 天前
    这么看起来我这个项目真是为 op 量身定做的。。。

    https://www.v2ex.com/t/1039258

    项目下载下来以后参考 compose.yml 和 dockerfile 这两个文件。

    或者直接去 github 抄
    https://github.com/ccmjga/mjga-scaffold

    如果你需要 redis 这些,在线选配 redis 以后下载下来,compose.yml 里面就会把 redis 这些给你配好。
    rexyan
        12
    rexyan  
       10 天前
    肯定是 docker-compose 啊,docker 是单进程的。这意味着如果你全都打包在一起,有一个服务挂了,你不知道
    javalaw2010
        13
    javalaw2010  
       10 天前   ❤️ 1
    只以演示为目的的话,其实 fat container 的做法也是可以的,甚至硬要上生产跑也是可行的。

    通常意义上 docker style 还是一个进程一个容器,不过也有不少人不赞同这种做法的,比如 podman 就给了用户更大的选择权。而 docker 方面的话有一些开源的 init ,最著名的比如 S6: https://github.com/just-containers/s6-overlay

    具体那种做法更好,其实见仁见智了,毕竟树挪死人挪活。
    oneisall8955
        14
    oneisall8955  
       10 天前 via Android
    docker compose 梭哈
    512357301
        15
    512357301  
       10 天前 via Android
    aio 也可以吧,能跑起来才是最好的,测试、演示,肯定是越简单越好。
    甚至可以把已经能跑起来的容器 or 镜像打成 tar 包,工程部直接导入成镜像,一键运行,还省的去 hub 拉镜像了,国内网络不太友好的。
    louisxxx
        16
    louisxxx  
       10 天前
    springboot+mysql+redis+ng+前端
    每个服务独立一个容器才是 docker 正确使用方式
    DiamondYuan
        17
    DiamondYuan  
       10 天前
    全都要


    1. 默认情况下 all in one , 这样只需要 docker run 就可以跑起来

    2. 新增 external database 环境变量,让用户可以用 docker-compose 单独把项目跑起来
    NaclFish
        18
    NaclFish  
       10 天前
    演示感觉可以打包个虚拟机过去
    jiangzm
        19
    jiangzm  
       10 天前
    既然是演示, 就不能访问远程演示吗,web 访问或者远程桌面都行
    dif
        20
    dif  
       9 天前
    看需要,如果想一键部署启动,那就 docker compose ,如果互相不影响,那就用 docker 。 大规模的用 k8s 。
    反正我要是给别人写文档,如果快速启动我们的产品或者项目,我就写 docker-compose 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1108 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 18:43 · PVG 02:43 · LAX 11:43 · JFK 14:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.