当前位置: 首页 > 工具软件 > bash-yaml > 使用案例 >

linux上使用docker-compose.yaml配置shell文件entrypoint.sh启动容器时自动运行nginx,php服务

仉明知
2023-12-01

前面的文章介绍了使用docker-compose.yaml配置文件直接启动nginx,php容器,其中entrypoint参数是容器运行后要执行的命令,entrypoint.sh配置文件需要在提前的镜像中配置好,这样就可以直接使用这个配置文件了,配置文件如下:
启动nginx服务

#!/bin/bash

#set -e 选项可以让你的脚本在出现异常时马上退出,后续命令不再执行
#set -o pipefail。这个特别的选项表示在管道连接的命令中,只要有任何一个命令失败(返回值非0),则整个管道操作被视为失败
#set -u 比较容易理解,Bash会把所有未定义的变量视为错误。默认情况下Bash会将未定义的变量视为空,不会报错,这也是很多坑的来源
set -euo pipefail  
# shopt -s nullglob 通配符*匹配文件时,如果没有匹配到任何文件时,那就会输出null string,而不是通配符字符本身
shopt -s nullglob

# allow arguments to be passed to nginx
# $@ 传递给脚本或函数的所有参数
# ${str:a:b} 表示提取字符串a开始的b个字符
# ${@:2} 表示提取除第一个参数外所有的参数
if [[ ${1:0:1} = '-' ]]; then
  EXTRA_ARGS="$@"
  set --
elif [[ ${1} == nginx || ${1} == /usr/local/nginx/sbin/nginx ]]; then
  EXTRA_ARGS="${@:2}"
  set --
fi


# allow arguments to be passed to nginx
if [[ ${1:0:1} = '-' ]]; then
  EXTRA_ARGS="$@"
  set --
elif [[ ${1} == nginx || ${1} == /usr/local/nginx/sbin/nginx ]]; then
  EXTRA_ARGS="${@:2}"
  set --
fi

# default behaviour is to launch nginx
if [[ -z ${1} ]]; then
  echo "Starting nginx..."
  exec /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf -g "daemon off;" ${EXTRA_ARGS}
else
  exec "$@"
fi

启动php服务

#!/bin/bash
set -eo pipefail
shopt -s nullglob
/usr/local/php/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php/etc/php-fpm.conf --pid /usr/local/php/var/run/php-fpm.pid
shell特殊变量列表
变量含义
$0当前脚本的文件名
$n传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。
$#传递给脚本或函数的参数个数。
$*传递给脚本或函数的所有参数。
$@传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。
$?上个命令的退出状态,或函数的返回值。
$$当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。
 类似资料: