你想使用的开发语言新浪云还暂不支持?
需要更丰富的可定制参数?
技术高手,手里的“杀手锏”需要特殊依赖?
如果你有类似的问题,那么接下来我们要介绍的新功能你一定感兴趣。
新浪云容器支持Dockerfile构建镜像啦!
新浪云支持Docker官方原汁原味的Dockerfile,也就是说,您现在可以在本地方便地使用Dockerfile的方式。相当自由便捷地构建开发、测试环境。调试完成后,只需一次git push将Dockerfile和代码等提交到SAE即可。
比如我有一个项目需要跑在php7的runtime上,但是新浪云现在目前还没有支持,怎么办?
如果是以前只能买主机自己搭建环境自己搞运维了,但是自从新浪云容器支持Dockerfile之后,这一切就变得非常简单快捷,只需将包含php7的docker镜像稍加修改就可以让代码在容器里迅速跑起来。
手气不错,第一个就是,就用这个skiychan/nginx-php7
docker run -it --rm --entrypoint bash skiychan/nginx-php7
获得关键信息:
① 启动脚本是/start.sh,配置是https,这个需要改一下。
② nginx和php-fpm是用supervisord启动的,而且发现有一处错误,php-fpm没有加前台运行参数-F,所以会一直尝试启动,也要改一下。
③ 代码目录为/data/www
① 在另一终端运行
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默认监听的端口。
docker build -t dkdm .
docker run -it --rm -p 5050:5050 dkdm
如果没问题的话我们的代码应该已经可以在本地docker容器的php7环境里跑起来了~
(也就是鼓捣半天折腾出来的这俩文件: Dockerfile、start.sh)
把刚写的Dockerfile、start.sh和代码一起提交到SAE的容器app就ok了。Dockerfile需要要放在代码的根目录。
这一步跟以前容器的使用方式没有任何区别。如果是第一次提交,可能需要下载base镜像,这个过程可能会稍慢,请耐心等待一下,如果是热门镜像或者镜像比较小就会很快啦,这个需要攻城狮们后续努力优化,所以目前建议大家优先使用较小或较热门的镜像。
待git push命令完成之后应用就可以正常访问了:
最终运行效果与本地调试时一模一样!
欢迎留言一起探讨容器的技术~
微信扫一扫
关注该公众号