Ich habe mir zuvor Entwurfsmuster zum Ausführen von CLI auf Docker Container angesehen, diesmal jedoch [IDCF Cloud CLI](http: //www.idcf). Machen wir ein Bild von .jp / cloud / spec / api.html). Sie können eine virtuelle Umgebung mit virtuanemv vorbereiten. Wenn Sie jedoch Befehle mit einem Docker-Image verteilen, können Sie dies versuchen, ohne die Umgebung des Hostcomputers zu verschmutzen. Du kannst es schaffen. Das Docker-Image kann auch bequem als CLI-Verteilungsformat verwendet werden.
Das diesmal erstellte Repository ist hier.
Dockerfile
Das Basis-Image verwendet 2.7 ON BUILD des offiziellen Python. Die Docker-Datei ist sehr einfach, da ONBUILD die erforderliche Verarbeitung für den Build ausführt.
Dockerfile
FROM python:2-onbuild
requirements.txt
Das IDCF-Repository (https://github.com/idcf/cloudstack-api) enthält keine Anforderungen.txt. Definieren Sie das Hinzufügen von abhängigen Paketen und Cloudstack-API, die ebenfalls über GitHub installiert werden sollen.
requirements.txt
httplib2
simplejson
argparse
prettytable==0.5
parsedatetime==0.8.7
lxml
-e git+https://github.com/idcf/cloudstack-api#egg=cloudstack-api
Das ONBUILD-Basisimage kopiert und installiert die Datei "require.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
Legen Sie die Umgebungsvariablen über den IDCF Cloud Console-API-Schlüssel (https://console.idcfcloud.com/user/apikey) fest.
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
aus dem Repository. Benennen Sie docker-compose.yml.default in docker-compose.yml um und legen Sie die Umgebungsvariablen fest.
$ git clone https://github.com/masato/docker-idcfcli.git idcfcli
$ cd idcfcli
$ mv docker-compose.yml.default docker-compose.yml
$ vi docker-compose.yml
Starten Sie den Container von Docker Compose. Der Standardbefehl führt [listVirtualMachines] aus (http://docs.idcf.jp/cloud/api/virtual-machine/#listvirtualmachines).
$ docker-compose build
$ docker-compose run --rm idcfcli
+--------------------------------------+------+---------+
| id | name | state |
+--------------------------------------+------+---------+
| xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx | seed | Running |
+--------------------------------------+------+---------+
Führen Sie einen Befehl wie folgt aus.
$ docker-compose run --rm idcfcli cloudstack-api listVirtualMachines -t=id,name,state
+--------------------------------------+------+---------+
| id | name | state |
+--------------------------------------+------+---------+
| xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx | seed | Running |
+--------------------------------------+------+---------+
Definieren Sie einen Alias in ~ / .bashrc
usw.
~/.bashrc
alias idcf-cli='docker-compose run --rm idcfcli cloudstack-api'
Durch die Verwendung von Aliasen wird die CLI ähnlicher.
$ idcf-cli listVirtualMachines -t=id,name,state
+--------------------------------------+------+---------+
| id | name | state |
+--------------------------------------+------+---------+
| xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx | seed | Running |
+--------------------------------------+------+---------+
Recommended Posts