cover_image

新浪云容器支持Dockerfile啦!

新浪云计算 2016年05月05日 10:31

你想使用的开发语言新浪云还暂不支持?

需要更丰富的可定制参数?

技术高手,手里的杀手锏需要特殊依赖?

如果你有类似的问题,那么接下来我们要介绍的新功能你一定感兴趣。



新浪云容器支持Dockerfile构建镜像啦!




 

新浪云支持Docker官方原汁原味的Dockerfile,也就是说,您现在可以在本地方便地使用Dockerfile的方式。相当自由便捷地构建开发、测试环境。调试完成后,只需一次git pushDockerfile和代码等提交到SAE即可。

 

比如我有一个项目需要跑在php7runtime上,但是新浪云现在目前还没有支持,怎么办?


如果是以前只能买主机自己搭建环境自己搞运维了,但是自从新浪云容器支持Dockerfile之后,这一切就变得非常简单快捷,只需将包含php7docker镜像稍加修改就可以让代码在容器里迅速跑起来。


1dockerhub上选个合适的base镜像



图片


手气不错,第一个就是,就用这个skiychan/nginx-php7


2拉下来bash启动镜像,看看里面的环境


docker run -it --rm --entrypoint bash skiychan/nginx-php7

 

获得关键信息:

① 启动脚本是/start.sh,配置是https这个需要改一下

② nginxphp-fpm是用supervisord启动的,而且发现有一处错误,php-fpm没有加前台运行参数-F,所以会一直尝试启动,也要改一下

③ 代码目录为/data/www


3下面开始定制我需要的运行环境


① 在另一终端运行

sudo docker cp 498c02b56955:/start.sh .

498c02b56955为在之前那个终端正在运行的docker container id)获得启动脚本start.sh

我把它改成了这样:


#!/bin/sh

set -e

chown -R www.www /data/www

/usr/bin/supervisord -n -c /etc/supervisord.conf

 

② 编写构建镜像的Dockerfile


FROM skiychan/nginx-php7:latest

COPY index.php /data/www/

COPY start.sh /

RUN sed -i 's/php-fpm$/php-fpm -F/g' /etc/supervisord.conf && \

          sed -i 's/80;$/5050 default;/g'/usr/local/nginx/conf/nginx.conf

 

做的事很简单。

  • 首先把本地代码拷贝到容器里的/data/www下。

  • 然后用修改后的start.sh覆盖容器里原来的启动脚本。

  • 最后修改配置,supervisord配置里php-fpm-F参数,修改nginx默认监听的端口。


4本地测试我们的修改和代码运行情况


docker build -t dkdm .

docker run -it --rm -p 5050:5050 dkdm

如果没问题的话我们的代码应该已经可以在本地docker容器的php7环境里跑起来了~


图片


5万事具备


(也就是鼓捣半天折腾出来的这俩文件: Dockerfilestart.sh


把刚写的Dockerfilestart.sh和代码一起提交到SAE的容器appok了。Dockerfile需要要放在代码的根目录。


这一步跟以前容器的使用方式没有任何区别。如果是第一次提交,可能需要下载base镜像,这个过程可能会稍慢,请耐心等待一下,如果是热门镜像或者镜像比较小就会很快啦,这个需要攻城狮们后续努力优化,所以目前建议大家优先使用较小或较热门的镜像。

 

git push命令完成之后应用就可以正常访问了:


图片


最终运行效果与本地调试时一模一样!


欢迎留言一起探讨容器的技术~图片





图片



微信扫一扫
关注该公众号

继续滑动看下一个
新浪云计算
向上滑动看下一个