如果我有一个 systemd 模板单元foo@.service,我如何符号链接到特定模板实例或为特定模板实例创建别名,例如,它bar.service是 的快捷方式foo@bar.service?
我有几个由 docker-compose 运行的服务。
/var/docker-compose/nginx/docker-compose.yml
/var/docker-compose/nextcloud/docker-compose.yml
/var/docker-compose/diaspora/docker-compose.yml
Run Code Online (Sandbox Code Playgroud)
为了使用 systemd 管理这些服务,我采用了一种使用模板单元的方法,以避免重复,因为所有 docker-compose 单元文件几乎都是相同的。
# /etc/systemd/system/docker-compose@.service
[Unit]
Description=%i service with docker compose
Requires=docker.service
After=docker.service
[Service]
Restart=always
WorkingDirectory=/var/docker-compose/%i
# Remove old containers, images and volumes
ExecStartPre=/usr/bin/docker-compose down -v
ExecStartPre=/usr/bin/docker-compose rm -fv
ExecStartPre=-/bin/bash -c 'docker volume ls -qf "name=%i_" | xargs docker volume rm'
ExecStartPre=-/bin/bash -c 'docker network ls -qf "name=%i_" | xargs docker network rm'
ExecStartPre=-/bin/bash -c 'docker ps -aqf "name=%i_*" | xargs docker rm'
# Compose up
ExecStart=/usr/bin/docker-compose up %i
# Compose down, remove containers and volumes
ExecStop=/usr/bin/docker-compose down -v
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
现在我想为各个服务提供别名或符号链接,以使启动和停止它们的时间更短。
而不是
systemctl stop docker-compose@nginx
Run Code Online (Sandbox Code Playgroud)
我想输入:
systemctl stop nginx
Run Code Online (Sandbox Code Playgroud)
我尝试创建一个符号链接:
cd /etc/systemd/system
ln -s docker-compose@nginx.service nginx.service
Run Code Online (Sandbox Code Playgroud)
但当nginx.service我想启动或停止它时却找不到。
我尝试在模板单元中定义别名:
[Install]
Alias=%i.service
Run Code Online (Sandbox Code Playgroud)
但是,如果我理解正确的话,这是不允许的,而且它对我不起作用。
我还没有找到一种方法来“导入”或“需要”基本单元文件并仅覆盖该WorkingDirectory行。然后,我可以创建单独的短文件,如下所示:
# /etc/systemd/system/nginx.service
Import=docker-compose@.service
WorkingDirectory=/var/docker-compose/nginx
Run Code Online (Sandbox Code Playgroud)
谢谢!
小智 0
如何按原样接受该命令并仅使用命令行的 bash 别名:
文件~/.bash_aliases
alias nginx-stop="systemctl stop docker-compose@nginx"
alias nginx-start="systemctl start docker-compose@nginx"
alias nextcloud-stop="systemctl stop docker-compose@nextcloud"
alias nextcloud-start="systemctl start docker-compose@nextcloud"
alias diaspora-stop="systemctl stop docker-compose@diaspora"
alias diaspora-start="systemctl start docker-compose@diaspora"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5596 次 |
| 最近记录: |