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

有没有发现写了好几年代码,如果离开公司连生产环境如何部署都不会?

  •  1
     
  •   sunshinev ·
    sunshinev · 2020-10-20 15:33:38 +08:00 · 11956 次点击
    这是一个创建于 1487 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大家是如何解决公司内的容器化部署的?

    用开源的部署系统么?还是自己开发一个?

    79 条回复    2020-10-22 11:03:39 +08:00
    raaaaaar
        1
    raaaaaar  
       2020-10-20 15:59:18 +08:00 via Android   ❤️ 3
    这本来就是运维的任务啊,如果在公司你个开发来搞这些,那肯定有问题。不说该不该学的问题。
    prof
        2
    prof  
       2020-10-20 16:02:56 +08:00   ❤️ 1
    想写个测试商城部署到云上还需要学 command,发现会的还是太少。加油
    GM
        3
    GM  
       2020-10-20 16:03:56 +08:00   ❤️ 1
    docker swarm + portainer,这是我发现的最简单好用的容器化部署方案了。对大部分小公司来说,k8s 过于复杂了。
    simon1991
        4
    simon1991  
       2020-10-20 16:05:17 +08:00   ❤️ 1
    大公司找运维
    小公司上宝塔()
    chogath
        5
    chogath  
       2020-10-20 16:06:25 +08:00
    阿里 ACK
    viator42
        6
    viator42  
       2020-10-20 16:09:06 +08:00   ❤️ 1
    @simon1991 小公司尤其外包宝塔耍到飞起
    lbp0200
        7
    lbp0200  
       2020-10-20 16:12:09 +08:00
    你说的是全栈工程师
    channg
        8
    channg  
       2020-10-20 16:45:51 +08:00
    公司有公司的 不用管 自己想要部署需要自己研究
    RockShake
        9
    RockShake  
       2020-10-20 16:53:03 +08:00
    小公司能接触到,大公司职能分配太清楚了
    easonHHH
        10
    easonHHH  
       2020-10-20 16:55:08 +08:00
    你说的是全干工程师
    hereIsChen
        11
    hereIsChen  
       2020-10-20 16:56:34 +08:00
    宝塔+1
    matrix67
        12
    matrix67  
       2020-10-20 16:57:04 +08:00
    gengzi
        13
    gengzi  
       2020-10-20 16:59:59 +08:00   ❤️ 1
    jenkins + docker
    zunceng
        14
    zunceng  
       2020-10-20 17:02:17 +08:00
    k8s 很复杂吗?只是使用的话挺简单的呀
    tandaly
        15
    tandaly  
       2020-10-20 17:04:33 +08:00
    rancher
    opengps
        16
    opengps  
       2020-10-20 17:07:05 +08:00
    我相反,一直做得小公司入门性质的工作,大公司里待着写模板化的代码,真没意思
    optional
        17
    optional  
       2020-10-20 17:10:50 +08:00 via iPhone
    有了 docker 运维不是个事,干净的系统加容器就好。
    HangoX
        18
    HangoX  
       2020-10-20 17:14:18 +08:00   ❤️ 2
    @GM 赞同,之前硬上 k8s 难不说,而且消耗资源巨大。你说的这套方案才是普通开发者最实惠的
    fangcan
        19
    fangcan  
       2020-10-20 17:20:16 +08:00
    这个你不会也正常,因为你不负责这块 想解决这个问题,就是自己弄个产品就可以了
    clf
        20
    clf  
       2020-10-20 17:25:57 +08:00
    公司里自己部署东西容易被运维打和甩锅。
    jaylee4869
        21
    jaylee4869  
       2020-10-20 17:26:53 +08:00
    现在后端都在学 K8s,写写 yaml 就能上线咯。
    weer0026
        22
    weer0026  
       2020-10-20 17:29:14 +08:00
    小项目我自己 docker 部署,大项目公司 k8s 集群。
    blessyou
        23
    blessyou  
       2020-10-20 17:31:23 +08:00
    不存在的。

    k8s + 白嫖 github aciton + 白嫖阿里云容器服务镜像仓库 完全可以自己弄一套 ci/cd 流程。我自己的网站就是这个方案部署的, 改代码开开心心的 commit, 等着 IM 的 deploy 通知 。
    whileFalse
        24
    whileFalse  
       2020-10-20 17:32:41 +08:00   ❤️ 1
    emmmmm……这个问题我可能有点发言权……
    我是运维,我司有 100 个左右的微服务,大部分在 k8s 里,少部分直接部署在虚拟机上的 Tomcat 环境。
    我司有 7 个测试环境。各个测试环境会共享数据库,并且每个环境不是完整的,很多环境只能用于部分业务的测试。
    我最近一段时间的工作:
    1. 写一个单机部署脚本,一键创建单机 k8s 环境和无状态中间件
    2. 写一个数据导入脚本,一键部署空的数据库,并从 s3 下载备份文件,导入到数据库中
    3. 一个很简单的构建部署一体化程序,简单的几步操作就可以部署全部 k8s 服务
    4. 正在做 Tomcat 服务转 k8s 服务的工作。

    以上工作的主要目的就是能很简单的启动一个几乎完整的环境。当然还有一些不会包含的组件,比如镜像仓库、配置中心等等。这是不是 LZ 想要的?
    chenshun00
        25
    chenshun00  
       2020-10-20 17:37:20 +08:00
    阿里云 ACK 贵不到哪里去,消耗量大能大到哪里去,8C64G 几台 3 年才这么点钱,人力可比这点钱贵多力.
    sunshinev
        26
    sunshinev  
    OP
       2020-10-20 17:54:26 +08:00
    @simon1991 宝塔也支持 docker 容器吗
    cszchen
        27
    cszchen  
       2020-10-20 18:00:11 +08:00
    docker-compose,或者希望更爽用 rancher
    xuanbg
        28
    xuanbg  
       2020-10-20 18:00:44 +08:00
    jenkins 用起来很简单,docker 简单做个镜像也很简单,ECS 也几乎不需要设置什么,就这点,学会了就能部署项目了呀
    wangyzj
        29
    wangyzj  
       2020-10-20 18:17:27 +08:00
    让你忘记怎么部署是趋势
    2won4u123
        30
    2won4u123  
       2020-10-20 18:31:10 +08:00 via Android
    @blessyou 大佬,怎么玩的,有没有博客指点一下?
    pierreorz
        31
    pierreorz  
       2020-10-20 18:36:26 +08:00
    rancher 啊。跟公司大小无关。还是要接触接触的,可以自己搞事
    ghjacky
        32
    ghjacky  
       2020-10-20 18:42:49 +08:00
    中小型企业,包括外包项目,容器化部署平台,rancher 最适合,也是用的最普遍的
    locoz
        33
    locoz  
       2020-10-20 18:44:05 +08:00 via Android
    没发现…反而一般公司运维还没我懂…
    blessyou
        34
    blessyou  
       2020-10-20 18:49:35 +08:00 via Android
    @2won4u123 我这个没办法那么快讲完。 你可以采用 docker swarm + portainer + github action +阿里云容器仓库 的方案 也能达到差不多的效果
    chiuan
        35
    chiuan  
       2020-10-20 18:52:31 +08:00
    @blessyou 跪求从零开始的教程
    ryd994
        36
    ryd994  
       2020-10-20 19:13:12 +08:00 via Android
    一个容器就觉得难,那我这些写内核的怎么办?离了公司连源代码都没有
    jerryrib
        37
    jerryrib  
       2020-10-20 19:17:58 +08:00   ❤️ 5
    写这段代码的时候,只有上帝和我知道它是干嘛的。现在,只有上帝知道。
    asanelder
        38
    asanelder  
       2020-10-20 21:00:58 +08:00
    @jerryrib #38 铁子,笑尿了
    buffzty
        39
    buffzty  
       2020-10-20 21:15:57 +08:00
    我们一般都是单机应用
    前端: 创建新 tag 提交到 github,webhook -> jenkins. docker 构建,将生成文件上传到 oss 并根据版本备份. 将 index.html 复制到 web 目录
    后端 api: 创建新 tag 提交到 github,webhook -> jenkins. docker 构建 新镜像. 停掉 api 容器,用 docker-compose 启动新容器 删除之前版本容器和镜像. 先后启动 2 个 api 容器,接口无缝升级.
    后端基础容器: nginx redis mysql phpmyadmin.
    环境变量全部在 jenkins 中. 现在开发体验很好.程序员只需要创 tag 过一会就会收到邮件通知.
    这东西就第一次麻烦 后面都简单
    gochat
        40
    gochat  
       2020-10-20 21:32:17 +08:00
    @buffzty 停掉 api 容器,用 docker-compose 启动新容器,你怎么保证停掉的容器中所有请求都处理完成了,也许是 ing 状态呢。

    按理应该先上新容器,再向老的容器发送退出信号,容器接收到退出信号,先发给应用程序,应用程序接收退出信号处理完请求队列里的请求,应用程序退出,负载均衡上摘除对应容器,在容器接收到退出信号的同时,按理说上层 lb 就不能在把请求转发到要下线的容器了,你仔细想想你这个是不是真正意义上的做到了无缝升级。
    buffzty
        41
    buffzty  
       2020-10-20 21:57:19 +08:00
    @gochat 我 api 是用 go 写的,接收到停止信号会等待所有 api 处理完成.有 5 秒超时. 并不是立即停止. 跟 nginx -s stop 一样的处理逻辑. 1 停,3 启动,2 停,4 启动,永远保证有一个容器在运行 还有问题吗 杠精
    CoderGeek
        42
    CoderGeek  
       2020-10-20 22:16:33 +08:00
    我现在一直保持自己本地的 docker 镜像 我自己的环境搞一份 哈哈哈
    Yoock
        43
    Yoock  
       2020-10-20 22:30:11 +08:00
    不敢用宝塔
    gochat
        44
    gochat  
       2020-10-20 23:00:35 +08:00   ❤️ 1
    @buffzty hh 你别激动,我可不是杠,我是发现很多人的没完全考虑清楚,你说的这个我当然知道,在问一句,流量到你的 go 应用上一层是啥
    threeEggs123
        45
    threeEggs123  
       2020-10-20 23:06:45 +08:00 via Android
    git merge master -> webhook -> Jenkins -> docker file -> image repo -> ECS (ELB,DNS …) -> Canary deploy ->Replace old -> IM tool(release email)。大概就这些,顺序好像有点乱😂
    buffzty
        46
    buffzty  
       2020-10-20 23:26:03 +08:00
    @gochat nginx upstream
    sampeng
        47
    sampeng  
       2020-10-21 00:01:47 +08:00 via iPhone
    不会部署自己代码?连怎么运行的逻辑都不知道。这跟运维有什么关系?研发最低限度要知道怎么在 docker 里面工作的。docker 运行在哪可以不用关心。这是最低底线了。连运行环境都不知道,如果是 java 系,严重怀疑你可能对虚拟机的理解也是很薄弱
    imycc
        48
    imycc  
       2020-10-21 03:28:01 +08:00
    不会不知道,因为我是运维 hhhh
    但是换了公司确实需要熟悉一下环境。不同的公司有不同的发布流程和发布系统,操作上肯定是要改变的。

    朴素一点想,运行代码需要考虑代码+合适的 OS+软件依赖+代码库依赖+数据库等配套,很多东西其实云厂商都提供了,直接用起来就是。再之后再考虑如何利用 CI/CD 优化发布流程。
    594duck
        49
    594duck  
       2020-10-21 04:52:01 +08:00 via iPhone
    @lychs1998 自己的孩子自己管自己的环境自己负责。因为吃饱了来打你。

    你到 CTO 那里签个字“wo,牛逼,自己部署,不要运维碰。”

    你只要签好字,运维部绝对不会和你 Bb 半句。还欢天喜地
    594duck
        50
    594duck  
       2020-10-21 04:54:00 +08:00 via iPhone   ❤️ 3
    看了一些很厉害的 docker 爱好者。

    原来都是 2,3 个包,1,2 个 ecs 环境呀。

    太好了,我已经看到在生产环境吃瘪的一脸扭曲的样子了
    way2explore2
        51
    way2explore2  
       2020-10-21 05:18:49 +08:00
    难道不是 15minutes to 2 hours 就学会了吗?即使之前不 pipeling ci/cd
    ericgui
        52
    ericgui  
       2020-10-21 06:27:34 +08:00 via iPhone
    You are just a tiny part of the whole system.
    buffzty
        53
    buffzty  
       2020-10-21 06:48:43 +08:00
    项目不基本都是 数据库 缓存 web 服务器 这 3 个主要的包吗? 大多数项目一两个服务器还不够. qps 上去了 就用云数据库 云缓层. 部署一个应用难道还要把 运维的那一套全给你列出来 你在那装什么呢 yyr
    CallMeReznov
        54
    CallMeReznov  
       2020-10-21 07:02:07 +08:00
    羡慕楼上,我现在快要接手运维的项目全是开发自己布置的,我现在光看就不想接手,看到 7-8 种系统的时候杀了他们🐎的心都有
    qiumaoyuan
        55
    qiumaoyuan  
       2020-10-21 07:03:10 +08:00
    没有啊
    yuananf
        56
    yuananf  
       2020-10-21 07:17:26 +08:00 via Android
    aws 上用 cdk,写好代码之后一个命令能把架构都搭好,其它云用 pulumi
    lqw3030
        57
    lqw3030  
       2020-10-21 07:35:27 +08:00 via iPhone
    多捣腾自己的东西,整个流程就都会了
    Cbdy
        58
    Cbdy  
       2020-10-21 08:32:32 +08:00 via Android
    简单应用 systemd 加一堆 shell 脚本,复杂应用 k8s
    dayeye2006199
        59
    dayeye2006199  
       2020-10-21 08:33:08 +08:00
    可以用 paas,heroku. Digitalocean 的 app
    alexzhu592
        60
    alexzhu592  
       2020-10-21 08:44:04 +08:00
    @viator42 php 的项目,宝塔爽到飞起
    aino
        61
    aino  
       2020-10-21 09:10:59 +08:00
    我和 33 楼一致的想法....不会大家真不会吧...
    cheng6563
        62
    cheng6563  
       2020-10-21 09:17:21 +08:00
    docker swarm 功能还是太缺失了。上 k3s 吧
    fenglangjuxu
        63
    fenglangjuxu  
       2020-10-21 11:00:51 +08:00
    不管是 php 还是 golang 还是 lua 我基本都能部署的起来
    但是项目的别的附属的生态链 就费劲(虽然本地折腾过,但是和线上的还是有区别的)了 比如 elk grafada 的画图
    kiddingU
        64
    kiddingU  
       2020-10-21 11:03:13 +08:00
    jenkins + k8s 完成部署,同时用 rancher
    jzphx
        65
    jzphx  
       2020-10-21 11:13:28 +08:00
    阿里云 flow 打包+执行脚本,机器上把可执行 jar 包配置成 service
    lululau
        66
    lululau  
       2020-10-21 11:15:45 +08:00
    学那么多技术有个鸟用,技术再好 35 岁一样被淘汰,不如学点吹牛逼拍马屁的真本事
    KuroNekoFan
        67
    KuroNekoFan  
       2020-10-21 11:16:33 +08:00
    之前我碰到过有同事尝试用 tar 命令来解压 zip 文件的
    zypy333
        68
    zypy333  
       2020-10-21 11:43:30 +08:00
    @Illusionary 公司新招的前端同事不知道怎么配置 IP,这正不正常
    tairan2006
        69
    tairan2006  
       2020-10-21 13:30:06 +08:00
    小公司自己部署不用 docker 不就是写几个脚本么
    yaphets666
        70
    yaphets666  
       2020-10-21 13:36:23 +08:00
    @zypy333 配置什么 IP? webpack-dev-server 的 IP?
    xiaoDevil
        71
    xiaoDevil  
       2020-10-21 13:45:50 +08:00
    @yaphets666 我猜测是配电脑的 IP 吧
    arloor
        72
    arloor  
       2020-10-21 13:49:15 +08:00 via iPad
    那是你菜
    wangbudong
        73
    wangbudong  
       2020-10-21 13:54:48 +08:00
    完了,我会,看来是我菜了
    sunshinev
        74
    sunshinev  
    OP
       2020-10-21 14:37:39 +08:00
    @lululau 正解
    woodensail
        75
    woodensail  
       2020-10-21 14:39:51 +08:00
    有没有发现写了好几年代码,如果离开公司连如何建设机房都不会?
    defunct9
        76
    defunct9  
       2020-10-21 14:48:13 +08:00
    @woodensail 一年换个机房 ,年年搬家
    ReinerShir
        77
    ReinerShir  
       2020-10-21 14:58:58 +08:00
    @blessyou 这一套和 k8s 有啥区别?哪个简单点?
    zypy333
        78
    zypy333  
       2020-10-22 10:35:17 +08:00
    @yaphets666 就他自己 win10 本上的 ip...说以前都是直接连上 wifi 就自动有网了
    yaphets666
        79
    yaphets666  
       2020-10-22 11:03:39 +08:00
    @zypy333 可能培训班出来的 不过问题不大 能干活就行
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5199 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 09:18 · PVG 17:18 · LAX 01:18 · JFK 04:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.