Use xargs to handle spaces in proxy options
We cat the options file, append the proxy image and then pass it to xargs to ensure it handles spaces correctly. Works better than using eval which can handle spaces but tries to evaluate things like backticks. Fixes: https://github.com/basecamp/kamal/issues/1448
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
kamal proxy boot_config set --publish false \
|
||||
--docker_options label=traefik.http.services.kamal_proxy.loadbalancer.server.scheme=http \
|
||||
label=traefik.http.routers.kamal_proxy.rule=PathPrefix\(\`/\`\)
|
||||
label=traefik.http.routers.kamal_proxy.rule=PathPrefix\(\`/\`\) \
|
||||
sysctl=net.ipv4.ip_local_port_range=\"10000\ 60999\"
|
||||
|
||||
@@ -46,7 +46,27 @@ class ProxyTest < IntegrationTest
|
||||
logs = kamal :proxy, :logs, capture: true
|
||||
assert_match /No previous state to restore/, logs
|
||||
|
||||
kamal :proxy, :boot_config, :set, "--docker-options='sysctl net.ipv4.ip_local_port_range=\"10000 60999\"'"
|
||||
assert_docker_options_in_file
|
||||
|
||||
kamal :proxy, :reboot, "-y"
|
||||
assert_docker_options_in_container
|
||||
|
||||
kamal :proxy, :boot_config, :reset
|
||||
|
||||
kamal :proxy, :remove
|
||||
assert_proxy_not_running
|
||||
end
|
||||
|
||||
private
|
||||
def assert_docker_options_in_file
|
||||
boot_config = kamal :proxy, :boot_config, :get, capture: true
|
||||
assert_match "Host vm1: --publish 80:80 --publish 443:443 --log-opt max-size=10m --sysctl net.ipv4.ip_local_port_range=\"10000 60999\"", boot_config
|
||||
end
|
||||
|
||||
def assert_docker_options_in_container
|
||||
assert_equal \
|
||||
"{\"net.ipv4.ip_local_port_range\":\"10000 60999\"}",
|
||||
docker_compose("exec vm1 docker inspect --format '{{ json .HostConfig.Sysctls }}' kamal-proxy", capture: true).strip
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user