Open liujiusheng opened 4 years ago
一年前就已经在接触Docker了,去年还一度想把Docker在公司推动起来,但到后来放弃了。 放弃的主要原因还是自己研究了两个星期也没有研究透彻,两周后又忙得不可名状。
由于要使用Docker必须要先在服务器上安装一个Docker,而Docker的安装要执行将近10个命令,算是比较复杂了。所以: 如果我只需要在服务器上安装某一个软件的话,而且这个软件比较好装,那我直接装比较合适。 如果需要装node.js环境,java环境,python环境、nginx环境、GDAL环境等,这种需要装很多东西的时候docker的优势就来了。
由于测试环境、预发布环境、生产环境需要尽量保持高度一致,且越相近越能避免问题,所以测试环境向预发布环境向生产环境发布时使用Docker这个是有极大优势的(都推荐使用-v来共享外面的代码文件夹到里面去,由于CMD命令是在容器启动时执行的,所以代码更新时的顺序是,先将新的代码包放到-v指定的目录里,然后停止原容器再启动容器,或者停止后删除原容器再重新创建新容器)。
但是它在开发环境到测试环境这一步就没什么优势了,原因在于我们开发的时候需要不断地重新编译代码,现在的编码工程化已经做得很成熟了,而工程化这一套方案不可能拿到Docker里面去。如果要强行上Docker只会让我们不断地打包,创建容器、删除容器,极大降低开发效率。
Dockerfile文件中的RUN、COPY、ADD命令是在创建镜像时执行的,而CMD命令是在容器创建时执行的,所以对于像Node.js这种需要启动的时候就要监听某个端口的应用需要配置CMD命令让代码在容器创建时启动。
一年前就已经在接触Docker了,去年还一度想把Docker在公司推动起来,但到后来放弃了。 放弃的主要原因还是自己研究了两个星期也没有研究透彻,两周后又忙得不可名状。
由于要使用Docker必须要先在服务器上安装一个Docker,而Docker的安装要执行将近10个命令,算是比较复杂了。所以: 如果我只需要在服务器上安装某一个软件的话,而且这个软件比较好装,那我直接装比较合适。 如果需要装node.js环境,java环境,python环境、nginx环境、GDAL环境等,这种需要装很多东西的时候docker的优势就来了。
由于测试环境、预发布环境、生产环境需要尽量保持高度一致,且越相近越能避免问题,所以测试环境向预发布环境向生产环境发布时使用Docker这个是有极大优势的(都推荐使用-v来共享外面的代码文件夹到里面去,由于CMD命令是在容器启动时执行的,所以代码更新时的顺序是,先将新的代码包放到-v指定的目录里,然后停止原容器再启动容器,或者停止后删除原容器再重新创建新容器)。
但是它在开发环境到测试环境这一步就没什么优势了,原因在于我们开发的时候需要不断地重新编译代码,现在的编码工程化已经做得很成熟了,而工程化这一套方案不可能拿到Docker里面去。如果要强行上Docker只会让我们不断地打包,创建容器、删除容器,极大降低开发效率。
Dockerfile文件中的RUN、COPY、ADD命令是在创建镜像时执行的,而CMD命令是在容器创建时执行的,所以对于像Node.js这种需要启动的时候就要监听某个端口的应用需要配置CMD命令让代码在容器创建时启动。