| 1540 | } |
| 1541 | |
| 1542 | fn setup_docker_registry(&self) -> Result<()> { |
| 1543 | info!("Setting up docker registry"); |
| 1544 | let registry_url = self |
| 1545 | .shared |
| 1546 | .sys_config |
| 1547 | .docker_registry |
| 1548 | .as_deref() |
| 1549 | .unwrap_or_default(); |
| 1550 | if registry_url.is_empty() { |
| 1551 | return Ok(()); |
| 1552 | } |
| 1553 | info!("Docker registry: {}", registry_url); |
| 1554 | const DAEMON_ENV_FILE: &str = "/etc/docker/daemon.json"; |
| 1555 | let mut daemon_env: Value = if fs::metadata(DAEMON_ENV_FILE).is_ok() { |
| 1556 | let daemon_env = fs::read_to_string(DAEMON_ENV_FILE)?; |
| 1557 | serde_json::from_str(&daemon_env).context("Failed to parse daemon.json")? |
| 1558 | } else { |
| 1559 | serde_json::json!({}) |
| 1560 | }; |
| 1561 | if !daemon_env.is_object() { |
| 1562 | bail!("Invalid daemon.json"); |
| 1563 | } |
| 1564 | daemon_env["registry-mirrors"] = |
| 1565 | Value::Array(vec![serde_json::Value::String(registry_url.to_string())]); |
| 1566 | fs::write(DAEMON_ENV_FILE, serde_json::to_string(&daemon_env)?)?; |
| 1567 | Ok(()) |
| 1568 | } |
| 1569 | } |
| 1570 | |
| 1571 | macro_rules! const_pad { |