精彩文章免费看

docker php-fpm 镜像设置容器开启自启服务

背景

官方 php-fpm 镜像在容器启动之后只能启动 php-fpm 服务,如果想要设置crontab、rsyslog 等自定义服务开机启动则可以使用 dockerfile 中的 ENTRYPOINT

ENTRYPOINT 的作用是在容器启动之前做一些初始化配置或者一些自定义的配置等

目录结构如下

[root@test dockerfile]#tree
├── php-fpm
├── php-fpm-script
│   └── entrypoint.sh

脚本内容如下

[root@test dockerfile]# cat php-fpm-script/entrypoint.sh 
#!/bin/bash
/etc/init.d/cron restart &
/etc/init.d/rsyslog restart &
docker-php-entrypoint php-fpm

dockerfile 关键代码

# 将脚本复制到镜像根目录并赋予 x 权限
COPY ./php-fpm-script/entrypoint.sh /
RUN chmod +x /entrypoint.sh
# 设置 ENTRYPOINT
ENTRYPOINT /entrypoint.sh

这样容器启动后就会执行 entrypoint.sh 脚本,启动 cron 、rsyslog 和 fpm