В идеале содержимое /Users/me/my/project/my-script.sh
Должно быть просто:
docker compose up
И большая часть вашей конфигурации Docker должна находиться внутри docker-compose.yml
файла вашего проекта .
Я создаю некоторое программное обеспечение docker-compose
, для которого я хотел бы работать по расписанию.
Поэтому мне нужно запланировать запуск в docker-compose up
MacOS (High Sierra, 10.13.3) с использованием launchd . Это конфигурация LaunchAgent, которую я использую.
<?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>
И когда процесс запускается в назначенное время, системный журнал выдает мне это сообщение об ошибке. Нет причин, по которым происходит сбой.
Aug 15 19:18:00 MacBook-Pro com.apple.xpc.launchd[1] (local.edgarlydata[5379]): Service exited with abnormal code: 1
ИЗМЕНЕНО, чтобы добавить содержание попытки с /Users/me/my/project/my-script.sh
. Нет кости.
#!/bin/sh sudo -u myuser /usr/local/bin/docker-compose up
Я видел подобный вопрос здесь . Но это было для docker-machine
. docker-compose
нужно начать с каталога проекта. Излишне говорить, что это не решает проблему.
Есть идеи?
В идеале содержимое /Users/me/my/project/my-script.sh
Должно быть просто:
docker compose up
И большая часть вашей конфигурации Docker должна находиться внутри docker-compose.yml
файла вашего проекта .
Таким образом, я получил это работает, сначала указав StandardErrorPath
и StandardOutPath
. Эти журналы позволяют мне увидеть, что в моей настройке docker-compose произошла ошибка working_dir
. Ранее это был PWD докера, и я жестко запрограммировал его просто в / usr / app
app: image: my/app:latest working_dir: /usr/app volumes: - .:/usr/app entrypoint: run app
Мой myjob.plist теперь выглядит следующим образом. И это работает для меня. Надеюсь, что это помогает другим.
<?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>