有没有发现写了好几年代码,如果离开公司连生产环境如何部署都不会? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
请不要在回答技术问题时复制粘贴 AI 生成的内容
sunshinev

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

  •  1
     
  •   sunshinev
    sunshinev Oct 20, 2020 13092 views
    This topic created in 2014 days ago, the information mentioned may be changed or developed.

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

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

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

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

    以上工作的主要目的就是能很简单的启动一个几乎完整的环境。当然还有一些不会包含的组件,比如镜像仓库、配置中心等等。这是不是 LZ 想要的?
    chenshun00
        25
    chenshun0  
       Oct 20, 2020
    阿里云 ACK 贵不到哪里去,消耗量大能大到哪里去,8C64G 几台 3 年才这么点钱,人力可比这点钱贵多力.
    sunshinev
        26
    sunshinev  
    OP
       Oct 20, 2020
    @simon1991 宝塔也支持 docker 容器吗
    cszchen
        27
    cszchen  
       Oct 20, 2020
    docker-compose,或者希望更爽用 rancher
    xuanbg
        28
    xuanbg  
       Oct 20, 2020
    jenkins 用起来很简单,docker 简单做个镜像也很简单,ECS 也几乎不需要设置什么,就这点,学会了就能部署项目了呀
    wangyzj
        29
    wangyzj  
       Oct 20, 2020
    让你忘记怎么部署是趋势
    2won4u123
        30
    2won4u123  
       Oct 20, 2020 via Android
    @blessyou 大佬,怎么玩的,有没有博客指点一下?
    pierreorz
        31
    pierreorz  
       Oct 20, 2020
    rancher 啊。跟公司大小无关。还是要接触接触的,可以自己搞事
    ghjacky
        32
    ghjacky  
       Oct 20, 2020
    中小型企业,包括外包项目,容器化部署平台,rancher 最适合,也是用的最普遍的
    locoz
        33
    locoz  
       Oct 20, 2020 via Android
    没发现…反而一般公司运维还没我懂…
    blessyou
        34
    blessyou  
       Oct 20, 2020 via Android
    @2won4u123 我这个没办法那么快讲完。 你可以采用 docker swarm + portainer + github action +阿里云容器仓库 的方案 也能达到差不多的效果
    chiuan
        35
    chiuan  
       Oct 20, 2020
    @blessyou 跪求从零开始的教程
    ryd994
        36
    ryd994  
       Oct 20, 2020 via Android
    一个容器就觉得难,那我这些写内核的怎么办?离了公司连源代码都没有
    jerryrib
        37
    jerryrib  
       Oct 20, 2020   5
    写这段代码的时候,只有上帝和我知道它是干嘛的。现在,只有上帝知道。
    asanelder
        38
    asanelder  
       Oct 20, 2020
    @jerryrib #38 铁子,笑尿了
    buffzty
        39
    buffzty  
       Oct 20, 2020
    我们一般都是单机应用
    前端: 创建新 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  
       Oct 20, 2020
    @buffzty 停掉 api容器,用 docker-compose 启动新容器,你怎么保证停掉的容器中所有请求都处理完成了,也许是 ing 状态呢。

    按理应该先上新容器,再向老的容器发送退出信号,容器接收到退出信号,先发给应用程序,应用程序接收退出信号处理完请求队列里的请求,应用程序退出,负载均衡上摘除对应容器,在容器接收到退出信号的同时,按理说上层 lb 就不能在把请求转发到要下线的容器了,你仔细想想你这个是不是真正意义上的做到了无缝升级。
    buffzty
        41
    buffzty  
       Oct 20, 2020
    @gochat 我 api 是用 go 写的,接收到停止信号会等待所有 api 处理完成.有 5 秒超时. 并不是立即停止. 跟 nginx -s stop 一样的处理逻辑. 1 停,3 启动,2 停,4 启动,永远保证有一个容器在运行 还有问题吗 杠精
    CoderGeek
        42
    CoderGeek  
       Oct 20, 2020
    我现在一直保持自己本地的 docker 镜像 我自己的环境搞一份 哈哈哈
    Yoock
        43
    Yoock  
       Oct 20, 2020
    不敢用宝塔
    gochat
        44
    gochat  
       Oct 20, 2020   1
    @buffzty hh 你别激动,我可不是杠,我是发现很多人的没完全考虑清楚,你说的这个我当然知道,在问一句,流量到你的 go 应用上一层是啥
    threeEggs123
        45
    threeEggs123  
       Oct 20, 2020 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  
       Oct 20, 2020
    @gochat nginx upstream
    sampeng
        47
    sampeng  
       Oct 21, 2020 via iPhone
    不会部署自己代码?连怎么运行的逻辑都不知道。这跟运维有什么关系?研发最低限度要知道怎么在 docker 里面工作的。docker 运行在哪可以不用关心。这是最低底线了。连运行环境都不知道,如果是 java 系,严重怀疑你可能对虚拟机的理解也是很薄弱
    imycc
        48
    imycc  
       Oct 21, 2020
    不会不知道,因为我是运维 hhhh
    但是换了公司确实需要熟悉一下环境。不同的公司有不同的发布流程和发布系统,操作上肯定是要改变的。

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

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

    你只要签好字,运维部绝对不会和你 Bb 半句。还欢天喜地
    594duck
        50
    594duck  
       Oct 21, 2020 via iPhone   3
    看了一些很厉害的 docker 爱好者。

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

    太好了,我已经看到在生产环境吃瘪的一脸扭曲的样子了
    way2explore2
        51
    way2explore2  
       Oct 21, 2020
    难道不是 15minutes to 2 hours 就学会了吗?即使之前不 pipeling ci/cd
    ericgui
        52
    ericgui  
       Oct 21, 2020 via iPhone
    You are just a tiny part of the whole system.
    buffzty
        53
    buffzty  
       Oct 21, 2020
    项目不基本都是 数据库 缓存 web 服务器 这 3 个主要的包吗? 大多数项目一两个服务器还不够. qps 上去了 就用云数据库 云缓层. 部署一个应用难道还要把 运维的那一套全给你列出来 你在那装什么呢 yyr
    CallMeReznov
        54
    CallMeReznov  
       Oct 21, 2020
    羡慕楼上,我现在快要接手运维的项目全是开发自己布置的,我现在光看就不想接手,看到 7-8 种系统的时候杀了他们的心都有
    qiumaoyuan
        55
    qiumaoyuan  
       Oct 21, 2020
    没有啊
    yuananf
        56
    yuananf  
       Oct 21, 2020 via Android
    aws 上用 cdk,写好代码之后一个命令能把架构都搭好,其它云用 pulumi
    xyooyx
        57
    xyooyx  
       Oct 21, 2020 via iPhone
    多捣腾自己的东西,整个流程就都会了
    Cbdy
        58
    Cbdy  
       Oct 21, 2020 via Android
    简单应用 systemd 加一堆 shell 脚本,复杂应用 k8s
    dayeye2006199
        59
    dayeye2006199  
       Oct 21, 2020
    可以用 paas,heroku. Digitalocean 的 app
    alexzhu592
        60
    alexzhu592  
       Oct 21, 2020
    @viator42 php 的项目,宝塔爽到飞起
    aino
        61
    aino  
       Oct 21, 2020
    我和 33 楼一致的想法....不会大家真不会吧...
    cheng6563
        62
    cheng6563  
       Oct 21, 2020
    docker swarm 功能还是太缺失了。上 k3s 吧
    keepfun
        63
    keepfun  
       Oct 21, 2020
    不管是 php 还是 golang 还是 lua 我基本都能部署的起来
    但是项目的别的附属的生态链 就费劲(虽然本地折腾过,但是和线上的还是有区别的)了 比如 elk grafada 的画图
    kiddingU
        64
    kiddingU  
       Oct 21, 2020
    jenkins + k8s 完成部署,同时用 rancher
    jzphx
        65
    jzphx  
       Oct 21, 2020
    阿里云 flow 打包+执行脚本,机器上把可执行 jar 包配置成 service
    lululau
        66
    lululau  
       Oct 21, 2020
    学那么多技术有个鸟用,技术再好 35 岁一样被淘汰,不如学点吹牛逼拍马屁的真本事
    KuroNekoFan
        67
    KuroNekoFan  
       Oct 21, 2020
    之前我碰到过有同事尝试用 tar 命令来解压 zip 文件的
    zypy333
        68
    zypy333  
       Oct 21, 2020
    @Illusionary 公司新招的前端同事不知道怎么配置 IP,这正不正常
    tairan2006
        69
    tairan2006  
       Oct 21, 2020
    小公司自己部署不用 docker 不就是写几个脚本么
    yaphets666
        70
    yaphets666  
       Oct 21, 2020
    @zypy333 配置什么 IP? webpack-dev-server 的 IP?
    xiaoDevil
        71
    xiaoDevil  
       Oct 21, 2020
    @yaphets666 我猜测是配电脑的 IP 吧
    arloor
        72
    arloor  
       Oct 21, 2020 via iPad
    那是你菜
    wangbudong
        73
    wangbudong  
       Oct 21, 2020
    完了,我会,看来是我菜了
    sunshinev
        74
    sunshinev  
    OP
       Oct 21, 2020
    @lululau 正解
    woodensail
        75
    woodensail  
       Oct 21, 2020
    有没有发现写了好几年代码,如果离开公司连如何建设机房都不会?
    defunct9
        76
    defunct9  
       Oct 21, 2020
    @woodensail 一年换个机房 ,年年搬家
    ReinerShir
        77
    ReinerShir  
       Oct 21, 2020
    @blessyou 这一套和 k8s 有啥区别?哪个简单点?
    zypy333
        78
    zypy333  
       Oct 22, 2020
    @yaphets666 就他自己 win10 本上的 ip...说以前都是直接连上 wifi 就自动有网了
    yaphets666
        79
    yaphets666  
       Oct 22, 2020
    @zypy333 可能培训班出来的 不过问题不大 能干活就行
    About     Help     Advertise     Blog     API     FAQ     Solana     3630 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 263ms UTC 04:30 PVG 12:30 LAX 21:30 JFK 00:30
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86