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

Docker 适合开发吗?

  •  
  •   sunjourney · 2017-01-17 14:18:13 +08:00 · 8086 次点击
    这是一个创建于 2900 天前的主题,其中的信息可能已经有所发展或是发生改变。

    使用 Docker 运行开发环境,用 Dockerfile 的 CMD 运行一个 express 进程,修改了项目源码有时候要重启动 express ,不用 docker 的话, ctrl + c 就可以了,用 docker 得 restart 整个 container ,时间比 ctrl + c 慢不少,部署没这个问题,使用 docker 配合开发有什么最佳姿势?另外求个 docker 群

    29 条回复    2018-02-03 12:00:58 +08:00
    doublleft
        1
    doublleft  
       2017-01-17 14:19:21 +08:00
    恭喜你入了 Docker 大坑

    可以开始考虑全套的 CI + 负载均衡 + 集群管理了。
    guyskk
        2
    guyskk  
       2017-01-17 14:46:49 +08:00 via Android
    可以把代码挂载(volume)到容器上,进入容器操作 shell
    guyskk
        3
    guyskk  
       2017-01-17 14:55:56 +08:00 via Android
    分享一篇文章:
    http://www.kkblog.me/notes/使用 Docker 构建高效 Web 开发环境
    yushiro
        4
    yushiro  
       2017-01-17 15:00:49 +08:00
    aerostone
        5
    aerostone  
       2017-01-17 15:11:08 +08:00 via Android
    不错,马克一下
    HypoChen
        6
    HypoChen  
       2017-01-17 15:13:42 +08:00
    一定要慎重
    blanu
        7
    blanu  
       2017-01-17 15:14:33 +08:00 via iPhone
    实话说, docker 是部署友好的,开发的时候相对来说还是用本地环境,或者是用非 cmd 命令然后 exec 进去搞比较好
    sunjourney
        8
    sunjourney  
    OP
       2017-01-17 15:16:45 +08:00
    @doublleft 接触 docker 几个月了,就是之前本机开发完用 docker 部署。现在尝试用 docker 开发,有时候要重新 restart container 感觉比较重。(虽然 container 是个轻概念)

    @guyskk 正是这么做的,代码在容器里,不过 dockerfile 写了 CMD [ "node", "bootstrap" ] 这类东西,“进入容器操作 shell ”的意思是不加 CMD ,直接 docker exec -it 这种方式吧,那么开发和部署的 image 会有些不同呢。不过似乎可惜把部署的 image 构建于开发的 image 之上。
    crysislinux
        9
    crysislinux  
       2017-01-17 15:18:06 +08:00   ❤️ 1
    开发一般是挂载 volume 到容器,用工具监控改动自动重启 express 的。就算本地开发一般也不是手动 Ctrl c 的。
    jarlyyn
        10
    jarlyyn  
       2017-01-17 15:18:18 +08:00
    docker exec -t -i DOCKERNAME bash
    sunjourney
        11
    sunjourney  
    OP
       2017-01-17 15:23:30 +08:00
    @crysislinux “就算本地开发一般也不是手动 Ctrl c 的。” 能具体解释下吗?比如,修改了 listen 的端口,加入了中间件, express 要重新启动,我就是 ctrl + c 再重新运行的,这个还有别的优雅的方式?
    guyskk
        12
    guyskk  
       2017-01-17 15:29:09 +08:00 via Android
    @sunjourney 是的,开发环境我一般只把外部依赖(mysql redis 这些)装到容器里,代码还是在宿主机运行,这样调试更方便,还有些调试使用的库也不适合装到容器里
    lostsquirrelX
        13
    lostsquirrelX  
       2017-01-17 15:48:38 +08:00
    IDE 插件支持才是正解
    otakustay
        14
    otakustay  
       2017-01-17 17:10:23 +08:00
    我一般会有一套开发环境,一套联调环境,开发环境直接启 express 直接 ctrl+c ,但到了联调(或提测前夕)会构建出 docker 来跑一次确保在和线上一致的环境下没有问题。这个阶段理论上不会有大量的问题和错误,所以不会有频繁的 ctrl+c 这种需要

    当然也可以全套 docker ,但需要在里面加进去 watch 文件并自动重启 express 的功能,同时用 volume 映射到源码上,或者提供一个封装了 docker exec 的脚本直接让你快速重启
    spice630
        15
    spice630  
       2017-01-17 17:33:55 +08:00
    我就用 docker 来开发,环境实在太复杂了,要么维护一堆软件安装脚本,要么维护 dockerfile ,我选择后者。
    https://github.com/songtianyi/docker-dev-envs
    欢迎贡献自己的开发环境~~
    mritd
        16
    mritd  
       2017-01-17 17:37:00 +08:00 via iPhone
    欢迎加入 k8s swarm 等着你
    lightening
        17
    lightening  
       2017-01-17 17:37:23 +08:00
    我们实际使用下来觉得并不好用,还是 Vagrant 方便一点。
    ryd994
        18
    ryd994  
       2017-01-17 17:48:59 +08:00 via Android
    快速开发其实不必用 docker
    但是配置开发环境的时候务必要有记录,其实直接写 dockerfile 更好
    debug 差不多了再进 docker 测试
    FlowMEMO
        19
    FlowMEMO  
       2017-01-17 18:23:58 +08:00
    借个楼问下, vagrant 和 docker 那个更适合开发.
    schoolers
        20
    schoolers  
       2017-01-17 19:00:44 +08:00
    @FlowMEMO docker
    wizardoz
        21
    wizardoz  
       2017-01-17 21:05:28 +08:00
    docker 也可以 ctrl+c.
    我调试用的 docker 都是跑一个 ssh ,直接登陆进去操作。
    DarsyCheuk
        22
    DarsyCheuk  
       2017-01-17 21:17:53 +08:00 via iPhone
    正确使用 docker 对于开发来说效率还是提高的~
    neutrino
        23
    neutrino  
       2017-01-17 22:24:06 +08:00
    @schoolers 解决了 npm 在 windows 下--no-bin-links 和 path too long 的问题吗?
    qwer1234asdf
        24
    qwer1234asdf  
       2017-01-17 22:33:24 +08:00
    想把 Vagrant 当集群用,就是唧唧不给力
    Reficul
        25
    Reficul  
       2017-01-17 22:55:13 +08:00 via Android
    Python 可以给进程发送 HUP 信号重新加载, node 不知道有没有类似的,可以参考下
    yimity
        26
    yimity  
       2017-01-18 08:33:58 +08:00
    Windows 下 用 docker -v 挂载宿主机目录,然后编辑宿主机的文件之后, docker 里面的程序不能 watch 到文件更改,从而程序不能自动重启,应该如何解决?
    其实就是 ionic 2 的项目。都是最新版的环境。
    scalaview
        27
    scalaview  
       2017-01-18 10:43:38 +08:00
    使用感觉良好
    mb4555
        28
    mb4555  
       2018-01-26 20:51:33 +08:00
    不错
    dan381006472
        29
    dan381006472  
       2018-02-03 12:00:58 +08:00
    我现在用的 kfkdock
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1132 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 18:40 · PVG 02:40 · LAX 10:40 · JFK 13:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.