2016-04-14 8 views
6

chciałbym napisać skrypt bash, który automatyzuje czynności:Jak wykonać polecenia w pojemniku Döcker jako część skryptu powłoki bash

Get wewnątrz działa pojemnik

docker exec -it CONTAINER_NAME /bin/bash 

wykonać kilka poleceń:

cat /dev/null > /usr/local/tomcat/logs/app.log 
exit 

Problematyczne jest to, gdy wykonywany jest docker exec. Nowa powłoka jest tworzona, ale pozostałe polecenia nie są wykonywane.

Czy istnieje sposób, aby go rozwiązać?

Odpowiedz

14

Można użyć heredoc z poleceniem docker exec:

docker exec -i CONTAINER_NAME bash <<'EOF' 
cat /dev/null > /usr/local/tomcat/logs/app.log 
exit 
EOF 

używać zmiennych:

logname='/usr/local/tomcat/logs/app.log' 

następnie użyć jako:

docker exec -i CONTAINER_NAME bash <<EOF 
cat /dev/null > "$logname" 
exit 
EOF 
+0

Dzięki. To działa. Jak mogę przekazywać parametry z zewnątrz do heredoc? –

+0

Aby przekazać parametry, należy użyć 'EOF' zamiast' 'EOF'' w pierwszej linii, a następnie użyć zmiennych wewnątrz heredoc – anubhava

+0

Dla tych, którzy się zastanawiają, udało mi się to również do pracy z poleceniem 'docker run'. – ndmeiri

-3

można po prostu uruchomić

docker exec -it container_id cat /dev/null > /usr/local/tomcat/logs/app.log

Powiązane problemy