volume support. add in subvols, too.
This commit is contained in:
@@ -3,7 +3,7 @@ blinker==1.9.0
|
||||
certifi==2026.2.25
|
||||
charset-normalizer==3.4.6
|
||||
click==8.3.1
|
||||
docker==7.1.0
|
||||
docker @ git+https://github.com/docker/docker-py@main
|
||||
Flask==3.1.3
|
||||
idna==3.11
|
||||
itsdangerous==2.2.0
|
||||
|
||||
@@ -54,6 +54,8 @@ def start_foundry_container(table: GameTable, key: KeyTable):
|
||||
client = docker.from_env()
|
||||
container = None
|
||||
networkName = client.containers.get(socket.gethostname()).attrs["HostConfig"]["NetworkMode"]
|
||||
data_bind = os.environ.get("FOUNDRY_DATA_BIND")
|
||||
data_volume = os.environ.get("FOUNDRY_DATA_VOL")
|
||||
|
||||
if table.docker_id != None and table.docker_id != 0:
|
||||
try:
|
||||
@@ -65,8 +67,46 @@ def start_foundry_container(table: GameTable, key: KeyTable):
|
||||
container.start()
|
||||
|
||||
else:
|
||||
|
||||
environment = [
|
||||
"FOUNDRY_ROUTE_PREFIX={prefix}".format(prefix=table.game_table_link),
|
||||
"FOUNDRY_TELEMETRY=FALSE",
|
||||
"FOUNDRY_LICENSE_KEY={key_value}".format(key_value=key.key),
|
||||
]
|
||||
ports = {"30000": str(30000 + table.game_table_id)}
|
||||
|
||||
image = "felddy/foundryvtt:{version}".format(version=table.version)
|
||||
labels = build_container_routing_labels(table.game_table_link, False)
|
||||
|
||||
if data_volume:
|
||||
|
||||
os.makedirs("/data/{prefix}".format(prefix=table.game_table_link), exist_ok=True)
|
||||
|
||||
mounts = [
|
||||
# docker.types.Mount(
|
||||
# target="/data",
|
||||
# source=data_volume,
|
||||
# type="volume",
|
||||
# subpath=table.game_table_link),
|
||||
docker.types.Mount(
|
||||
target="/data/container_cache",
|
||||
source=data_volume,
|
||||
type="volume",
|
||||
subpath="container_cache")
|
||||
|
||||
]
|
||||
|
||||
container = client.containers.run(
|
||||
image=image,
|
||||
labels=labels,
|
||||
mounts=mounts,
|
||||
environment=environment,
|
||||
ports=ports,
|
||||
detach=True,
|
||||
network=networkName
|
||||
)
|
||||
|
||||
else:
|
||||
volumes = {
|
||||
"{data_bind}/{prefix}".format(
|
||||
data_bind=os.environ.get("FOUNDRY_DATA_BIND"),
|
||||
@@ -76,13 +116,6 @@ def start_foundry_container(table: GameTable, key: KeyTable):
|
||||
data_bind=os.environ.get("FOUNDRY_DATA_BIND")
|
||||
): {"bind": "/data/container_cache", "mode": "rw"},
|
||||
}
|
||||
environment = [
|
||||
"FOUNDRY_ROUTE_PREFIX={prefix}".format(prefix=table.game_table_link),
|
||||
"FOUNDRY_TELEMETRY=FALSE",
|
||||
"FOUNDRY_LICENSE_KEY={key_value}".format(key_value=key.key),
|
||||
]
|
||||
|
||||
ports = {"30000": str(30000 + table.game_table_id)}
|
||||
|
||||
container = client.containers.run(
|
||||
image=image,
|
||||
|
||||
Reference in New Issue
Block a user