arcbox_container/
config.rs1use serde::{Deserialize, Serialize};
4use std::collections::HashMap;
5
6#[derive(Debug, Clone, Serialize, Deserialize)]
10pub struct PortBinding {
11 pub host_ip: String,
13 pub host_port: u16,
15 pub container_port: u16,
17 pub protocol: String,
19}
20
21#[derive(Debug, Clone, Default, Serialize, Deserialize)]
23pub struct ContainerConfig {
24 pub name: Option<String>,
26 pub image: String,
28 pub cmd: Vec<String>,
30 pub entrypoint: Vec<String>,
32 pub env: HashMap<String, String>,
34 pub working_dir: Option<String>,
36 pub user: Option<String>,
38 pub exposed_ports: Vec<String>,
40 pub port_bindings: Vec<PortBinding>,
42 pub volumes: Vec<VolumeMount>,
44 pub resources: ResourceLimits,
46 pub labels: HashMap<String, String>,
48 pub restart_policy: RestartPolicy,
50 pub tty: Option<bool>,
52 pub open_stdin: Option<bool>,
54}
55
56#[derive(Debug, Clone, Serialize, Deserialize)]
58pub struct VolumeMount {
59 pub source: String,
61 pub target: String,
63 pub read_only: bool,
65}
66
67#[derive(Debug, Clone, Default, Serialize, Deserialize)]
69pub struct ResourceLimits {
70 pub cpu_limit: Option<u64>,
72 pub memory_limit: Option<u64>,
74 pub memory_reservation: Option<u64>,
76}
77
78#[derive(Debug, Clone, Default, Serialize, Deserialize)]
80#[serde(rename_all = "kebab-case")]
81pub enum RestartPolicy {
82 #[default]
84 No,
85 Always,
87 OnFailure,
89 UnlessStopped,
91}