# 容器内部服务 这是本步骤的定义: ``` { "title": "配置容器服务", "program":"scripts/init.sh", "text": "scenario/ep5/1.md", "check":"check/check.sh" } ``` 本步骤中使用到了**program**与**check**字段,这两个字段分别引用了一个在本步骤开始前执行,以及结束时用于检查当前步骤是否完成的shell脚本,下面将以此为实例,介绍这两个字段的用途。 ## 初始化脚本 `date +gitcourse服务器端脚本执行于%Y年%m月%d日%H:%M -d "+8 hour" >>temp` 这是*scripts/init.sh*的具体内容,它的作用是在本步骤开始前,将当前的时间打印到*/temp*文件中,我们将在下一步中通过容器内部服务访问到此文件的内容 ## 准备工作 这是/etc/nginx/nginx.conf的内容 ``` events { worker_connections 1024; } http { server { default_type 'text/html'; charset utf-8; listen 8888; location / { root /; index index.html; } } } ``` 此实验已经预装了**nginx**服务,并在配置文件中指定了**8888**端口作为对外服务的入口 并且在根目录下放置了一个*index.html*文件,当本步骤开启后,您将可以通过nginx服务访问到*index.html*以及由*init.sh*创建的*temp*文件 但是在此之前,请完成**nginx服务的开启**: `service nginx start` 否则在下一步将无法访问由容器提供的服务 ## 检查脚本 为了确保学员完成必要的前置任务,您可以通过**check**字段指定一个检查脚本 这是当前步骤的*check/check.sh*的内容: ``` if ps -ef|grep "nginx"|egrep -v grep >/dev/null then echo "1" fi ``` 当且仅当容器中已运行nginx服务时,才会允许进入下一步。当您在编写检查脚本时,需要注意以下几点: 1. 脚本默认通过*/bin/bash*来执行 2. 有任何输出或者报错,均会允许进入下一步 3. 没有任何输出才不会进入下一步