mel*_*low 1 bash systemd docker
成功遵循这些RHEL systemd 容器说明后,我现在希望容器每次启动时都运行 bash 脚本。但是,我希望它只运行一次。这对我来说似乎不是“服务”。我不想启动容器,然后手动运行 bash 脚本(例如,docker exec -it ...)。我应该制作一个 systemd 单元文件来启动脚本,然后在我的 bash 脚本中禁用该服务吗?这看起来有点像黑客,不是吗?
更新:要回答评论者,bash 脚本需要 systemd。所以首先systemd必须启动,然后脚本运行,安装软件,然后发出systemctl start命令。是的,我知道你在想什么:使用 RUN 安装软件,然后让 systemd 启动它,但不幸的是,我不能为这个项目这样做。我没有编写的脚本希望 systemd 运行。此外,脚本确实在容器内的命名卷中运行。
您可以oneshot为 bash 脚本创建服务类型的 systemd 单元文件。该oneshot类型代表短期进程,通常作为一次性任务运行。systemd 在继续处理其他单元之前等待进程退出。
例如,
[Unit]
Description=my only-once script
[Service]
Type=oneshot
ExecStart=/bin/bash /path/to/only_once_script.sh
RemainAfterExit=true
StandardOutput=journal
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
请注意,如果您希望 systemd在启动操作成功完成后将服务视为活动的,则RemainAfterExit必须设置为。true
查看systemd文档中的示例 2和示例 3。
| 归档时间: |
|
| 查看次数: |
3399 次 |
| 最近记录: |