|
92 | 92 | undef: { |
93 | 93 | $mount_mapping = getvar('settings.dirs') ? { |
94 | 94 | undef => '', |
95 | | - default => join(getvar('settings.dirs').map |$k,$v| { if getvar('v.path') { "-v ${v['path']}:${v['path']}" } }, ' '), |
| 95 | + default => join(getvar('settings.dirs').map |$k,$v| { if getvar('v.path') { if getvar('os.selinux.enabled') { "-v ${v['path']}:${v['path']}:Z" } else { "-v ${v['path']}:${v['path']}" } } }, ' '), # lint:ignore:140chars |
96 | 96 | } |
97 | 97 | } |
98 | 98 | String[0]: { |
|
102 | 102 | $mount_mapping = "-v ${settings['image']['mounts']}" |
103 | 103 | } |
104 | 104 | Array: { |
105 | | - $mount_mapping = join(getvar('settings.image.mounts').map|$k| { "-v ${k}" }, ' ') |
| 105 | + $mount_mapping = join(getvar('settings.image.mounts').map|$k| { if getvar('os.selinux.enabled') { "-v ${k}:${k}:Z" } else { "-v ${k}:${k}" } }, ' ') # lint:ignore:140chars |
106 | 106 | } |
107 | 107 | Hash: { |
108 | | - $mount_mapping = join(getvar('settings.image.mounts').map |$k,$v| { "-v ${k}:${v}" }, ' ') |
| 108 | + $mount_mapping = join(getvar('settings.image.mounts').map |$k,$v| { if getvar('v.path') { if getvar('os.selinux.enabled') { "-v ${v['path']}:${v['path']}:Z" } else { "-v ${v['path']}:${v['path']}" } } }, ' ') # lint:ignore:140chars |
109 | 109 | } |
110 | 110 | default: { |
111 | 111 | tp::fail($on_missing_data, "tp::service ${app} - settings.image.mounts is not a valid type") |
112 | 112 | } |
113 | 113 | } |
114 | 114 |
|
115 | 115 | $docker_args = pick_default(getvar('settings.docker.args'),'') |
| 116 | + $cidfile = '%t/%n.ctr-id' |
| 117 | + $docker_command = $facts['os']['family'] ? { |
| 118 | + 'RedHat' => '/usr/bin/podman', |
| 119 | + default => '/usr/bin/docker', |
| 120 | + } |
116 | 121 | $docker_after = $facts['os']['family'] ? { |
117 | 122 | 'RedHat' => 'network-online.target', |
118 | 123 | default => 'docker.service', |
|
129 | 134 | 'Requires' => $docker_requires, |
130 | 135 | }, |
131 | 136 | 'Service' => { |
132 | | -# 'ExecStartPre' => "/usr/bin/docker stop ${app} ; /usr/bin/docker rm ${app} ; /usr/bin/docker pull ${settings['docker_image']}", |
133 | | - 'ExecStart' => "/usr/bin/docker run --rm --name ${app} ${docker_args} ${port_mapping} ${mount_mapping} ${docker_image}", |
| 137 | + 'ExecStartPre' => "/bin/rm -f ${cidfile}", |
| 138 | + 'ExecStart' => "${docker_command} run --rm --cidfile=${cidfile} --name ${app} ${docker_args} ${port_mapping} ${mount_mapping} ${docker_image}", |
134 | 139 | 'Restart' => 'always', |
135 | 140 | 'RestartSec' => '10s', |
| 141 | + 'ExecStop' => "${docker_command} stop --ignore --cidfile=${cidfile}", |
| 142 | + 'ExecStopPost' => "${docker_command} rm -f --ignore --cidfile=${cidfile}", |
136 | 143 | }, |
137 | 144 | 'Install' => { |
138 | 145 | 'WantedBy' => 'multi-user.target', |
|
0 commit comments