Idealmente, o conteúdo de
/Users/me/my/project/my-script.sh
Deve ser apenas:
docker compose up
E a maioria da sua configuração do Docker deve entrar no arquivo docker-compose.yml
do seu projeto.
Estou criando alguns softwares com docker-compose
, para os quais gostaria de executar um cronograma.
Portanto, preciso agendar uma execução de docker-compose up
no MacOS (High Sierra, 10.13.3), usando o launchd . Esta é a configuração do LaunchAgent que estou usando.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>local.edgarlydata</string>
<!-- This script, which calls "docker-compose up" also fails :/
<key>Program</key>
<string>/Users/me/my/project/my-script.sh</string> -->
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/docker-compose</string>
<string>up</string>
</array>
<key>StartCalendarInterval</key>
<array>
<dict>
<key>Hour</key>
<integer>19</integer>
<key>Minute</key>
<integer>18</integer>
<key>Weekday</key>
<integer>3</integer>
</dict>
</array>
</dict>
</plist>
E quando o processo é iniciado no horário agendado, o log do sistema me fornece essa mensagem de erro. Não há nenhuma razão para porque a falha está acontecendo.
Aug 15 19:18:00 MacBook-Pro com.apple.xpc.launchd[1] (local.edgarlydata[5379]): Service exited with abnormal code: 1
EDITADO para adicionar o conteúdo de uma tentativa com /Users/me/my/project/my-script.sh
. Sem dados.
#!/bin/sh
sudo -u myuser /usr/local/bin/docker-compose up
Eu vi uma pergunta semelhante aqui . Mas isso foi para docker-machine
. docker-compose
precisa ser iniciado a partir de um diretório de projeto. Escusado será dizer que não resolve o problema.
Alguma ideia?
Idealmente, o conteúdo de
/Users/me/my/project/my-script.sh
Deve ser apenas:
docker compose up
E a maioria da sua configuração do Docker deve entrar no arquivo docker-compose.yml
do seu projeto.
Então, comecei a trabalhar, primeiro especificando StandardErrorPath
e StandardOutPath
. Esses registros mostram que houve um erro na minha configuração docker-compose working_dir
. Anteriormente, era o PWD do docker, e eu codifiquei-o apenas para / usr / app
app:
image: my/app:latest
working_dir: /usr/app
volumes:
- .:/usr/app
entrypoint: run app
Meu myjob.plist agora se parece com isso. E isso está funcionando para mim. Espero que isso ajude os outros.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>local.myjob</string>
<key>StandardErrorPath</key>
<string>/Users/me/Projects/myproject/stderr.log</string>
<key>StandardOutPath</key>
<string>/Users/me/Projects/myproject/stdout.log</string>
<key>WorkingDirectory</key>
<string>/Users/me/Projects/myproject</string>
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin</string>
</dict>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/docker-compose</string>
<string>up</string>
<string>-d</string>
</array>
<key>StartCalendarInterval</key>
<array>
<dict>
<key>Hour</key>
<integer>9</integer>
<key>Minute</key>
<integer>30</integer>
<key>Weekday</key>
<integer>1</integer>
</dict>
</array>
</dict>
</plist>