Skip to content

Commit ff4d2e2

Browse files
spookyvisionAnatol Ulrich
andauthored
operators/docker: add support for setting labels
Co-authored-by: Anatol Ulrich <[email protected]>
1 parent a0292d1 commit ff4d2e2

File tree

3 files changed

+26
-0
lines changed

3 files changed

+26
-0
lines changed

src/pyinfra/operations/docker.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ def container(
2727
networks: list[str] | None = None,
2828
volumes: list[str] | None = None,
2929
env_vars: list[str] | None = None,
30+
labels: list[str] | None = None,
3031
pull_always: bool = False,
3132
present: bool = True,
3233
force: bool = False,
@@ -41,6 +42,7 @@ def container(
4142
+ ports: port list to expose
4243
+ volumes: volume list to map on container
4344
+ env_vars: environment variable list to inject on container
45+
+ labels: Label list to attach to the container
4446
+ pull_always: force image pull
4547
+ force: remove a container with same name and create a new one
4648
+ present: whether the container should be up and running
@@ -85,6 +87,7 @@ def container(
8587
networks or list(),
8688
volumes or list(),
8789
env_vars or list(),
90+
labels or list(),
8891
pull_always,
8992
)
9093
existent_container = host.get_fact(DockerContainer, object_id=container)

src/pyinfra/operations/util/docker.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,7 @@ class ContainerSpec:
163163
networks: list[str] = field(default_factory=list)
164164
volumes: list[str] = field(default_factory=list)
165165
env_vars: list[str] = field(default_factory=list)
166+
labels: list[str] = field(default_factory=list)
166167
pull_always: bool = False
167168

168169
def container_create_args(self):
@@ -179,6 +180,9 @@ def container_create_args(self):
179180
for env_var in self.env_vars:
180181
args.append("-e {0}".format(env_var))
181182

183+
for label in self.labels:
184+
args.append("--label {0}".format(label))
185+
182186
if self.pull_always:
183187
args.append("--pull always")
184188

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"kwargs": {
3+
"container": "nginx",
4+
"image": "nginx:alpine",
5+
"labels": [
6+
"eg_key=eg_val"
7+
],
8+
"present": "true",
9+
"start": false
10+
},
11+
"facts": {
12+
"docker.DockerContainer": {
13+
"object_id=nginx": []
14+
}
15+
},
16+
"commands": [
17+
"docker container create --name nginx --label eg_key=eg_val nginx:alpine"
18+
]
19+
}

0 commit comments

Comments
 (0)