J'ai déjà regardé Design Patterns for Running CLI on Docker Container, mais cette fois [IDCF Cloud CLI](http: //www.idcf Faisons une image de .jp / cloud / spec / api.html). Vous pouvez préparer un environnement virtuel avec virtuanemv, mais si vous distribuez des commandes avec une image Docker, vous pouvez l'essayer sans polluer l'environnement de la machine hôte. Tu peux le faire. L'image Docker peut également être utilisée de manière pratique comme format de distribution CLI.
Le référentiel créé cette fois-ci est ici.
Dockerfile
L'image de base utilise 2.7 ON BUILD du [Python] officiel (https://hub.docker.com/_/python/). Le Dockerfile est très simple car ONBUILD effectue le traitement nécessaire pour la construction.
Dockerfile
FROM python:2-onbuild
requirements.txt
Le référentiel IDCF (https://github.com/idcf/cloudstack-api) n'inclut pas requirements.txt. Définissez également l'ajout de packages dépendants et de cloudstack-api à installer via GitHub.
requirements.txt
httplib2
simplejson
argparse
prettytable==0.5
parsedatetime==0.8.7
lxml
-e git+https://github.com/idcf/cloudstack-api#egg=cloudstack-api
L'image de base ONBUILD copiera et `pip install 'le fichier requirements.txt.
Dockerfile
FROM python:2.7
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
ONBUILD COPY requirements.txt /usr/src/app/
ONBUILD RUN pip install --no-cache-dir -r requirements.txt
ONBUILD COPY . /usr/src/app
docker-compose.yml
Définissez les variables d'environnement à partir de la clé d'API IDCF Cloud Console (https://console.idcfcloud.com/user/apikey).
docker-compose.yml
idcfcli:
build: .
volumes:
- /etc/localtime:/etc/localtime:ro
environment:
- IDCF_COMPUTE_HOST=
- IDCF_COMPUTE_API_KEY=
- IDCF_COMPUTE_SECRET_KEY=
command: ["/usr/local/bin/cloudstack-api","listVirtualMachines","-t=id,name,state"]
git clone
du référentiel. Renommez docker-compose.yml.default en docker-compose.yml et définissez les variables d'environnement.
$ git clone https://github.com/masato/docker-idcfcli.git idcfcli
$ cd idcfcli
$ mv docker-compose.yml.default docker-compose.yml
$ vi docker-compose.yml
Démarrez le conteneur à partir de Docker Compose. La commande par défaut exécute listVirtualMachines.
$ docker-compose build
$ docker-compose run --rm idcfcli
+--------------------------------------+------+---------+
| id | name | state |
+--------------------------------------+------+---------+
| xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx | seed | Running |
+--------------------------------------+------+---------+
Exécutez n'importe quelle commande comme suit.
$ docker-compose run --rm idcfcli cloudstack-api listVirtualMachines -t=id,name,state
+--------------------------------------+------+---------+
| id | name | state |
+--------------------------------------+------+---------+
| xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx | seed | Running |
+--------------------------------------+------+---------+
Définissez un alias dans ~ / .bashrc
etc.
~/.bashrc
alias idcf-cli='docker-compose run --rm idcfcli cloudstack-api'
L'utilisation d'alias le rend plus proche de la CLI.
$ idcf-cli listVirtualMachines -t=id,name,state
+--------------------------------------+------+---------+
| id | name | state |
+--------------------------------------+------+---------+
| xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx | seed | Running |
+--------------------------------------+------+---------+
Recommended Posts