It looks like a duplicate of old issue https://github.com/localstack/localstack/issues/78
But now it's reproducible for me with the latest version of LocalStack. 
for ip in candidates:
            if ping(ip):
                DOCKER_BRIDGE_IP = ip
                break
try:
    DOCKER_HOST_FROM_CONTAINER = DOCKER_BRIDGE_IP
    if not is_in_docker and not is_in_linux:
        
        
        if LOCALSTACK_HOSTNAME == HOSTNAME:
            DOCKER_HOST_FROM_CONTAINER = 'host.docker.internal'
    
    if is_in_docker and LOCALSTACK_HOSTNAME == DOCKER_BRIDGE_IP:
        DOCKER_HOST_FROM_CONTAINER = socket.gethostbyname('host.docker.internal')
        LOCALSTACK_HOSTNAME = DOCKER_HOST_FROM_CONTAINER
except socket.error:
    pass
if is_in_docker and not os.environ.get('LAMBDA_REMOTE_DOCKER', '').strip():
    LAMBDA_REMOTE_DOCKER = True
CONFIG_FILE_PATH = os.path.join(expanduser('~'), '.localstack')
no_proxy = ','.join(set((LOCALSTACK_HOSTNAME, HOSTNAME, LOCALHOST, '127.0.0.1', '[::1]')))
if os.environ.get('no_proxy'):
    os.environ['no_proxy'] += ',' + no_proxy
elif os.environ.get('NO_PROXY'):
    os.environ['NO_PROXY'] += ',' + no_proxy
else:
    os.environ['no_proxy'] = no_proxy
CLI_COMMANDS = {}
VALID_REGIONS = set(Session().get_available_regions('sns'))
def parse_service_ports():