最近在学 flask,想自己写个博客练手.遇到的困难远比自己想象得多,
今天逛 V2 看到 /t/274121 有人推荐 Daocloud,听说免费就去折腾下看看. 完全没接触过 Docker,只知道它的名字叫容器,是轻量虚拟化方案. 注册之后登陆控制台,一直是个吃豆人,后来发现是 DaoVoice 脚本导致的, 建议处理下吧.
反正是进来了,按照我的想象应该就是找个容器点几下就能运行了才对.
看到有个镜像仓库,我想这应该就是我这种菜鸟要的!
结果发现基础系统环境或者是 Python 相关都不能部署到 daocloud!
我并不清楚部署到主机是什么意思!
左点右点在 DaoCloud 的 Github 看到一些 Deomo,fork 之后就试着代码部署.
执行节点我选的国内,想着国内访问速度会好些.
等了很久还是没部署好,去吃个饭回来说是超时了.
我的内心是崩溃的.
不知道怎么办才好
我最后的选择不是去看 DaoCloud 的文档,去看 Docker 的入门.
发现问题比想象得简单得多
基本上只要几分钟你就能知道怎么回事,我在本地很快部署了自己的镜像.
也找到了线上部署失败的原因
pull 一个 ubuntu 镜像之后进 shell 安装各种需要的东西.发现速度很慢.
Ubuntu 的 apt 源是国外的.
Running in 6be8ad6cb255
Ign http://archive.ubuntu.com trusty InRelease Get:1 http://archive.ubuntu.com trusty-updates InRelease
看完入门文档然后自己写了一个 Dockerfile,顺利定制了第一个容器.
发现是真的非常简单,为什么 DaoCloud 连号称做了那么多工作,还没有一页 Docker 入门教程来得实用.
FROM ubuntu
MAINTAINER pimin "xxxx@qq.com"
RUN sed -i "s/archive.ubuntu.com/cn.archive.ubuntu.com/g" /etc/apt/sources.list
RUN apt-get update -y
RUN apt-get install -y python-pip python-dev build-essential
COPY . /app
WORKDIR /app
RUN pip install -r requirements.txt
EXPOSE 5000
ENTRYPOINT ["python"]
CMD ["app.py"]
代码比较简单,就是从 Ubuntu 镜像创建一个容器,先更换 Ubuntu 源为国内源,然后安装 Python,pip
再用 pip 安装 requirements.txt 内指定的依赖.
最后运行 flask 的最小 demo.
然后代码 push 到 github 之后通过 DaoCloud 的代码构建,只要 3 分钟!!
我当时是震惊的! DaoCloud 为什么不能写一行替换替换为国内源的代码.
在我看来那个什么镜像加速都没有改一下源来得实用.
如果你代码构建做得好,像我这样新手一次就就可以代码构建成功!
这样的失败体验很有可能把我们挡在门外
项目地址在 https://github.com/28sui/dao-flask
Docker 和 github 结合确实是非常方便的方案,push 之后自动重新部署.
不清楚如果是集群的话重新部署需不需要下线,会不会自动调度部署顺序.
感觉定制性非常高!
有疑问的是
1.安全性,demo 只暴露了一个端口,按照传统思路来用 docker 会不会增加风险?
2.动态调整问题.通过 Dockerfile 做调整都要重新部署.对于我这样的新手学习来说,不如 vps 之类来得方便.
如果我按 VPS 那样使用,SSH 进去做的修改重启之后就会丢失.我知道我应该在本地先调试好再 push.
3.如果我有几个服务,是不是分几个容器更靠谱一些?这样运行成本是不是就高很多.
这样看来 Daocloud 的免费基本上也就是练习用.专业版只是开了功能,对于资源使用额度没有提升.
入门级的话,成本上升是不是太快了?
比阿里云这些有价格优势么?
4.免费只有 2x 资源,确实是太小了,绑定微信有 3x 才算能用.2x 运行环境,1x 数据库.
不过有效期只有半年.总体来说并不是一个长期使用的方案.
当然作为学习环境 50M 的数据库是完全足够了. 暂时就入这个坑吧!
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.