我们有一个iOS ipa托管平台,其功能类似fir.im 和蒲公英的托管平台,只是功能很单一,就是上传下载功能
为了服务稳定性,已经拓展到多台打包机更方便,我们使用docker统一管理,这里记录容器化过程
Dockerfile文件编写
首先将网站工程代码拿到本地,放到一个ferris_wheel文件夹下, 这个文件夹同级目录创建Dockerfile文件,因为工程是node工程,因此镜像我们选择node:latest
FROM node:latest
LABEL maintainer="lichanghong"
WORKDIR /ferriswheel
COPY ./ferris /ferriswheel
ENTRYPOINT ["npm", "start"]
docker-compose.yml服务编写
packing_ferris:
build: ./ferris_wheel
container_name: packing_ferris
hostname: packing_ferris
user: root
volumes:
- /Users/lch/Desktop/ferris:/ferriswheel/upload:rw
restart: always
networks:
- packing_net
功能测试
直接执行docker-compose up -d
,node不存在就会自动执行docker pull拉取镜像,等待拉取完成。结果拉取太慢一直失败,于是删除docker下载最新版本,再去阿里云来个加速,然后执行飞速成功!
想到俩问题: 1,工程的端口用的是3003,现有的打包机通过什么映射到80的 2,iOS下载必须要用https,这个现有功能通过什么搭建的 3,本地如何测试整个流程
定位端口映射
首先mac自带的apache并没有开启,查到brew安装了nginx,通过brew info nginx
查到配置入口/usr/local/etc/nginx/
在这个目录下找到了nginx配置的443端口映射到3003端口,并且域名和ssl证书都在这里配置
最后就是本地如何测试整个功能,先按照打包机nginx服务配置,在本地docker中的nginx镜像中也配置一下,然后本地跑起来看看效果,最终测试成功!
结论
把一个node网站服务docker容器化,使用docker-compose一键安装管理,不仅易扩展,最主要的是易维护
文章最初发版在合伙鸭官方网站