public async Task Install() { //docker run -d -p 8080:8080 -p 80:80 -v $PWD/traefik.toml:/etc/traefik/traefik.toml traefik var traefikDir = cidataDir + "/traefik"; if (!Directory.Exists(traefikDir)) { Directory.CreateDirectory(traefikDir); } File.WriteAllText(Path.Combine(traefikDir, "traefik.toml"), EmbeddedResourcesCiLib.TraefikToml.ReadAsText()); await dockerWrapper.CreateImageIfNotFound(traefikRepoTag); var traefikImage = await dockerWrapper.FindImage(traefikRepoTag); using (var client = this.dockerWrapper.GetClient()) { var infraCidata = "/cidata"; var p = new CreateContainerParameters(); p.Image = traefikImage.ID; p.ExposedPorts = new Dictionary <string, EmptyStruct>(); p.ExposedPorts.Add("8080/tcp", new EmptyStruct()); p.Name = containerName; p.HostConfig = new DockerHostConfig() .Bind(infraCidata + "/traefik/traefik.toml:/etc/traefik/traefik.toml") .PortBinding("0.0.0.0", "8080", "8080/tcp") .PortBinding("0.0.0.0", "80", "80/tcp") .RestartAlways() .GetConfig(); var response = await client.Containers.CreateContainerAsync(p); var p2 = new ContainerStartParameters(); await client.Containers.StartContainerAsync(response.ID, p2); } // Traffic network so that traefic can communicate with other containers using (var client = this.dockerWrapper.GetClient()) { //client.Networks.CreateNetworkAsync(); } }
public async Task InitVaultImage() { await dockerWrapper.CreateImageIfNotFound(repoTag); }
public async Task Install() { // Image is alrady used by the mirror registry await dockerWrapper.CreateImageIfNotFound(repoTag); var registryImage = await dockerWrapper.FindImage(repoTag); using (var client = dockerWrapper.GetClient()) { /* * https://docs.docker.com/registry/deploying/#get-a-certificate * * docker run -d \ * --restart=always \ * * docker run \ * --name privateregistry \ * -v ${HOME}/cidata/privateregistry/var/lib/registry:/var/lib/registry \ * -v ${HOME}/cidata/privateregistry/certs:/certs \ * -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \ * -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/privateregistry.mynetwork.local.crt \ * -e REGISTRY_HTTP_TLS_KEY=/certs/privateregistry.mynetwork.local.key \ * -p 5443:443 \ * registry:2 */ // copy tls keys shellHelper.Bash($"rm -rf {cidataDir}/privateregistry/certs"); shellHelper.Bash($"mkdir -p {cidataDir}/privateregistry/certs"); shellHelper.Bash($"cp {cidataDir}/tls/privateregistry.mynetwork.local.* {cidataDir}/privateregistry/certs"); // Registry data outside the container in /privateregistry shellHelper.Bash("mkdir -p {cidataDir}/privateregistry/var/lib/registry"); var infraCidata = "/cidata"; var p = new CreateContainerParameters(); p.Image = registryImage.ID; p.ExposedPorts = new Dictionary <string, EmptyStruct>(); p.ExposedPorts.Add("443/tcp", new EmptyStruct()); p.Env = new List <string>() { "REGISTRY_HTTP_ADDR=0.0.0.0:443", "REGISTRY_HTTP_TLS_CERTIFICATE=/certs/privateregistry.mynetwork.local.crt", "REGISTRY_HTTP_TLS_KEY=/certs/privateregistry.mynetwork.local.key", "REGISTRY_STORAGE_DELETE_ENABLED=true" }; p.Name = "privateregistry"; p.HostConfig = new DockerHostConfig() .Bind($"{infraCidata}/privateregistry/var/lib/registry:/var/lib/registry") .Bind($"{infraCidata}/privateregistry/certs:/certs") .PortBinding("0.0.0.0", "5443", "443/tcp") .RestartAlways() .GetConfig(); var response = await client.Containers.CreateContainerAsync(p); var p2 = new ContainerStartParameters(); await client.Containers.StartContainerAsync(response.ID, p2); } }