Copy config under a volume for Docker (similar to a ConfigMap for K8S). (#914)
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				Lint Checks / Run linter (push) Successful in 42s
				
			
		
			
				
	
				Publish / Build and publish (push) Successful in 1m15s
				
			
		
			
				
	
				Deploy Test / Run deploy test suite (push) Successful in 4m43s
				
			
		
			
				
	
				Webapp Test / Run webapp test suite (push) Successful in 4m40s
				
			
		
			
				
	
				Smoke Test / Run basic test suite (push) Successful in 3m49s
				
			
		
			
				
	
				Database Test / Run database hosting test on kind/k8s (push) Successful in 9m9s
				
			
		
			
				
	
				Container Registry Test / Run contaier registry hosting test on kind/k8s (push) Successful in 3m33s
				
			
		
			
				
	
				External Stack Test / Run external stack test suite (push) Successful in 4m34s
				
			
		
			
				
	
				Fixturenet-Laconicd-Test / Run Laconicd fixturenet and Laconic CLI tests (push) Successful in 13m43s
				
			
		
			
				
	
				K8s Deploy Test / Run deploy test suite on kind/k8s (push) Successful in 7m19s
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	Lint Checks / Run linter (push) Successful in 42s
				
			Publish / Build and publish (push) Successful in 1m15s
				
			Deploy Test / Run deploy test suite (push) Successful in 4m43s
				
			Webapp Test / Run webapp test suite (push) Successful in 4m40s
				
			Smoke Test / Run basic test suite (push) Successful in 3m49s
				
			Database Test / Run database hosting test on kind/k8s (push) Successful in 9m9s
				
			Container Registry Test / Run contaier registry hosting test on kind/k8s (push) Successful in 3m33s
				
			External Stack Test / Run external stack test suite (push) Successful in 4m34s
				
			Fixturenet-Laconicd-Test / Run Laconicd fixturenet and Laconic CLI tests (push) Successful in 13m43s
				
			K8s Deploy Test / Run deploy test suite on kind/k8s (push) Successful in 7m19s
				
			This emulates the K8S ConfigMap behavior on Docker by using a regular volume.
If a directory exists under `config/` which matches a named volume, the contents will be copied to the volume on `create` (provided the destination volume is empty).  That is, rather than a ConfigMap, it is essentially a "config volume".
For example, with a compose file like:
```
version: '3.7'
services:
  caddy:
    image: cerc/caddy-ethcache:local
    restart: always
    volumes:
      - caddyconfig:/etc/caddy:ro
volumes:
  caddyconfig:
```
And a directory:
```
❯ ls stack-orchestrator/config/caddyconfig/
Caddyfile
```
After `laconic-so deploy create --spec-file caddy.yml --deployment-dir /srv/caddy` there will be:
```
❯ ls /srv/caddy/data/caddyconfig
Caddyfile
```
Mounted at `/etc/caddy`
Reviewed-on: #914
Reviewed-by: David Boreham <dboreham@noreply.git.vdb.to>
Co-authored-by: Thomas E Lackey <telackey@bozemanpass.com>
Co-committed-by: Thomas E Lackey <telackey@bozemanpass.com>
			
			
This commit is contained in:
		
							parent
							
								
									1def279d26
								
							
						
					
					
						commit
						6087e1cd31
					
				| @ -520,6 +520,16 @@ def create_operation(deployment_command_context, spec_file, deployment_dir, netw | ||||
|                 if os.path.exists(source_config_dir): | ||||
|                     destination_config_dir = deployment_dir_path.joinpath("configmaps", configmap) | ||||
|                     copytree(source_config_dir, destination_config_dir, dirs_exist_ok=True) | ||||
|         else: | ||||
|             # TODO: We should probably only do this if the volume is marked :ro. | ||||
|             for volume_name, volume_path in parsed_spec.get_volumes().items(): | ||||
|                 source_config_dir = resolve_config_dir(stack_name, volume_name) | ||||
|                 # Only copy if the source exists and is _not_ empty. | ||||
|                 if os.path.exists(source_config_dir) and os.listdir(source_config_dir): | ||||
|                     destination_config_dir = deployment_dir_path.joinpath(volume_path) | ||||
|                     # Only copy if the destination exists and _is_ empty. | ||||
|                     if os.path.exists(destination_config_dir) and not os.listdir(destination_config_dir): | ||||
|                         copytree(source_config_dir, destination_config_dir, dirs_exist_ok=True) | ||||
| 
 | ||||
|     # Delegate to the stack's Python code | ||||
|     # The deploy create command doesn't require a --stack argument so we need to insert the | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user