Idealerweise den Inhalt von /Users/me/my/project/my-script.sh
Sollte nur sein:
docker compose up
Der Großteil Ihrer Docker-Konfiguration sollte in die Projektdatei aufgenommen docker-compose.yml
werden.
Ich baue eine Software mit docker-compose
, für die ich nach einem Zeitplan laufen möchte.
Ich muss also einen Lauf docker-compose up
auf MacOS (High Sierra, 10.13.3) mit launchd einplanen . Dies ist die LaunchAgent-Konfiguration, die ich verwende.
<?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>
Wenn der Prozess zum geplanten Zeitpunkt gestartet wird, zeigt das Systemprotokoll diese Fehlermeldung an. Es gibt keinen Grund, warum der Fehler passiert.
Aug 15 19:18:00 MacBook-Pro com.apple.xpc.launchd[1] (local.edgarlydata[5379]): Service exited with abnormal code: 1
BEARBEITET, um den Inhalt eines Versuchs mit hinzuzufügen /Users/me/my/project/my-script.sh
. Kein Würfel.
#!/bin/sh sudo -u myuser /usr/local/bin/docker-compose up
Ich habe hier eine ähnliche Frage gesehen . Aber das war für docker-machine
. docker-compose
muss von einem Projektverzeichnis aus starten. Es ist unnötig zu sagen, dass es das Problem nicht löst.
Irgendwelche Ideen?
Idealerweise den Inhalt von /Users/me/my/project/my-script.sh
Sollte nur sein:
docker compose up
Der Großteil Ihrer Docker-Konfiguration sollte in die Projektdatei aufgenommen docker-compose.yml
werden.
Also bekam ich diese Funktion, zuerst durch Angabe von StandardErrorPath
und StandardOutPath
. Durch diese Protokolle konnte ich feststellen, dass meine Docker-Compose- working_dir
Einstellung fehlerhaft war . Es war früher Dockers PWD, und ich habe es hart in nur / usr / app codiert
app: image: my/app:latest working_dir: /usr/app volumes: - .:/usr/app entrypoint: run app
Meine myjob.plist sieht jetzt so aus. Und das funktioniert für mich. Hoffe das hilft anderen.
<?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>