Mam aplikację, która ma wiele kontenerów. do łatwej instalacji, postanawiam użyć obrazu opakowania. czego oczekiwałem jest jak poniżejBłąd przy "dokowaniu-komponowaniu", gdy używam potoku z sh (echo "dokowanie-komponowanie ..." | sh)
$ docker run my_application install | sh
-> ciągnąć wszystkie podobne obrazy z rejestru
$ docker run my_application up | sh
-> zrobić wstępną pracę i całą kontenerów
ale jestem z stucked poniżej problem.
$ echo "docker-compose exec cassandra cqlsh -e 'desc keyspaces'" | sh
Traceback (most recent call last):
File "<string>", line 3, in <module>
File "compose/cli/main.py", line 57, in main
File "compose/cli/main.py", line 108, in perform_command
File "compose/cli/main.py", line 353, in exec_command
File ".tox/py27/lib/python2.7/site-packages/dockerpty/pty.py", line 338, in start
File ".tox/py27/lib/python2.7/site-packages/dockerpty/io.py", line 32, in set_blocking
ValueError: file descriptor cannot be a negative integer (-1)
docker-compose returned -1
błąd wywołany z okna dokowanego. podczas próby jak poniżej, to działa dobrze.
$ echo "docker exec my_application_cassandra_1 cqlsh -e 'desc keyspaces'" | sh
system_traces system
$ sh -c "docker-compose exec cassandra cqlsh -e 'desc keyspaces'"
system_traces system
ale kiedy używać rurę z docker-komponować zawsze umieścić błąd.
Czy ktoś ma pojęcie, jak sobie z tym poradzić?
Mam ten sam problem, gdy potokiem 'Döcker-compose' wyjście poprzez gzip do pliku. Kiedy uruchamiam polecenie w Bash, działa dobrze. Jednak jako zadanie cron otrzymuję ten sam błąd, co Ty - i ten sam plik śledzenia stosu i numery linii i nazwy funkcji, jak ty, i kod powrotu -1. Oto polecenie:/usr/local/bin/docker-compose exec postgres pg_dumpall --username = postgres | gzip> $ postgres_backup_path' (Mam tę linię w skrypcie kopii zapasowej, który uruchamiam czasem ręcznie (działa dobrze), a czasami jako zadanie cron (nie działa)). – KajMagnus
Pracowałem nad moim problemem, dzwoniąc do Dockera bezpośrednio w ten sposób: '/ usr/bin/docker exec edm_postgres_1 pg_dumpall --username = postgres | gzip> $ postgres_backup_path' - działa dobrze zarówno z Cronu, jak i ręcznie w Bashu. – KajMagnus