背景
由于事业部专门成立团队做部署平台,由于各种因素迟迟没有上线,以前的Jenkins也不能用了,但是前后端需要有环境进行联调,后端还好说每个模块本地起个服务就行,前端就尴尬了本地起服务限制太多,所以需要想办法搞个环境,遂想着悄悄咪咪(深藏功与名…)搞了个环境让大家能先跑起来不至于耽误工期。
满足以下要求:
- 前端更新简单
- 无脑一条命令搞定start\stop\restart
- 于生成环境尽量贴合
实操
因为生成环境是基于docker做部署,所以先弄个nginx的镜像。nginx的镜像茫茫多,不过大体都很全面,我觉得太重,所以就弄了个最简单的。
docker-compose.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| version: '3.1' web: my-nginx: container_name: new-monitor-nginx image: nginx restart: always logging: driver: "journald" volumes: - /home/xxx/mount/nginx.conf:/etc/nginx/nginx.conf - /home/xxx/mount/html:/etc/nginx/html ports: - "443:443" network_mode: "bridge" environment: - TZ=Asia/Shanghai ulimits: core: 0
|
Dockerfile
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| # 用官方的nginx镜像 FROM nginx # ENTRYPOINT 类似于 CMD 指令,但其不会被 docker run 的命令行参数指定的指令所覆盖,用于传参。 # eg:docker run nginx:one -c /etc/nginx/new.conf,容器内会运行nginx -c /etc/nginx/new.conf ENTRYPOINT ["nginx", "-c"]
#COPY 复制,从上下文目录中复制文件或者目录到容器里指定路径。 COPY nginx.conf /etc/nginx/nginx.conf COPY html /etc/nginx/html
# RUN,在 docker build时作用 RUN rm /etc/nginx/nginx.conf /etc/nginx/conf.d/default.conf
# EXPOSE 声明端口,镜像服务的守护端口,以方便配置映射。 EXPOSE 8088
# VOLUME 用于挂载数据卷 VOLUME /var/log/nginx/log
#CMD 类似于 RUN 指令,在docker run 时运行。 CMD ["nginx", "-g", "daemon off;"]
|
构建、启动容器
1 2 3 4
| docker build -t xxx docker-compose down sleep 10 docker-compose up -d
|
后续直接
后续
其实最终我又把docker干掉了….因为有同事悄悄咪咪手动装了nginx,优化了一下把nginx挂到了系统服务上,同样的也是直接systemctl xxx就行了。
反正结果是好的,结合alibaba toolkit也是玩的飞快了。
干研发的不就得折腾吗,对吧。