nginx-docker

背景

由于事业部专门成立团队做部署平台,由于各种因素迟迟没有上线,以前的Jenkins也不能用了,但是前后端需要有环境进行联调,后端还好说每个模块本地起个服务就行,前端就尴尬了本地起服务限制太多,所以需要想办法搞个环境,遂想着悄悄咪咪(深藏功与名…)搞了个环境让大家能先跑起来不至于耽误工期。

满足以下要求:

  1. 前端更新简单
  2. 无脑一条命令搞定start\stop\restart
  3. 于生成环境尽量贴合

实操

因为生成环境是基于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

后续直接

1
docker restart 容器名

后续

其实最终我又把docker干掉了….因为有同事悄悄咪咪手动装了nginx,优化了一下把nginx挂到了系统服务上,同样的也是直接systemctl xxx就行了。

反正结果是好的,结合alibaba toolkit也是玩的飞快了。

干研发的不就得折腾吗,对吧。