# Using the CLI with Docker

The CLI can be used in Docker without any problem.

## Basic usage

In order to use it you must mount the scaleway configuration file:
```sh
docker run -it --rm -v $HOME/.config/scw:/root/.config/scw scaleway/cli:v2.26.0
```

If you want to use `scw` instead of `docker run` you can add the following in your `~/.bashrc`:
```bash
scw() {
    docker run -it --rm -v $HOME/.config/scw:/root/.config/scw scaleway/cli:v2.26.0 "$@"
}
export -f scw
```

Or if you use ZSH, add the following in your `~/.zshrc`:
```zsh
scw() {
    docker run -it --rm -v $HOME/.config/scw:/root/.config/scw scaleway/cli:v2.26.0 $@
}
```

## Use your ssh-key

In order to use your ssh-key you must mount your .ssh folder
```sh
docker run -it --rm -v $HOME/.config/scw:/root/.config/scw -v $HOME/.ssh:/root/.ssh scaleway/cli:v2.26.0 $@
```

You can then ensure that your ssh key is present in your Scaleway account
```sh
scw iam ssh-key init
```

## Autocompletion

You can still use autocompletion while running the CLI in Docker, you just need to modify script generated by the CLI.
For instance, `scw autocomplete script shell=bash` will return:
```bash
_scw() {
	_get_comp_words_by_ref -n = cword words

	output=$(scw autocomplete complete bash -- "$COMP_LINE" "$cword" "${words[@]}")
	COMPREPLY=($output)
	# apply compopt option and ignore failure for older bash versions
	[[ $COMPREPLY == *= ]] && compopt -o nospace 2> /dev/null || true
	return
}
complete -F _scw scw
```

And in your `~/.bashrc` you can add:
```bash
scw() {
    docker run -it --rm -v $HOME/.config/scw:/root/.config/scw scaleway/cli:v2.26.0 "$@"
}
export -f scw

_scw() {
	_get_comp_words_by_ref -n = cword words

	output=$(docker run -i --rm -v $HOME/.config/scw:/root/.config/scw scaleway/cli:v2.26.0 autocomplete complete bash -- "$COMP_LINE" "$cword" "${words[@]}")
	COMPREPLY=($output)
	# apply compopt option and ignore failure for older bash versions
	[[ $COMPREPLY == *= ]] && compopt -o nospace 2> /dev/null || true
	return
}
complete -F _scw scw
```

The trick is to remove the `-t` when using docker inside the completion function.

# Using the CLI with Podman
If running with Podman and SELinux in enforcing mode, one must use the :Z option when mounting the configuration file.  
For instance:  
```bash
podman run -it --rm -v $HOME/.config/scw:/root/.config/scw:Z scaleway/cli:v2.26.0
```
