起動スクリプトを取得しようとしています(システムサービス)のためのdocker-compose containers
。
私はそれが動作するように努力しており、変更後に変更しようとしています。いくつかは動作し、他のものは期待どおりに動作しません。環境変数システム構成を使用します。
# named `dc-mag235.service`
[Unit]
Description=Magento 2.3.5 Docker-Compose Containers
After=docker.service
Requires=docker.service
[Service]
EnvironmentFile=/var/www/docker/_systemd.startups_/mag2.35.env.file
#PassEnvironment=$DCFOLDER
Type=simple
TimeoutStartSec=0
Restart=always
WorkingDirectory=${DCFOLDER}
ExecStartPre=mkdir -p ${LOGFOLDER}
ExecStartPre=echo ${DCFOLDER}
ExecStartPre=echo Starting Docker-compose service for ${DESCRIPTION}...
ExecStart=/usr/local/bin/docker-compose start
ExecReload=/usr/local/bin/docker-compose restart
ExecStop=/usr/local/bin/docker-compose stop
[Install]
WantedBy=multi-user.target
DESCRIPTION=Magento 2.3.5 Docker-Compose Containers
LOGFOLDER=/var/www/docker/_initlogs_
LOGFILE=$LOGFOLDER/dc-mag235.startup.log
DCFOLDER=/var/www/docker/magento2-docker-full-supervisord-expanded/release-magento2.35
WorkingDirectory
変数と一緒に試してみてください$DCFOLDER
。
削除すると、PassEnvironment
ここで説明したのと同じエラーが発生します。:
sudo service dc-mag235 status
/etc/systemd/system/dc-glo-mag235.service:8: Invalid environment name for PassEnvironment, ignoring: $DCFOLDER
Apr 22 12:32:20 glo020-truservcomm-jhb1-001 systemd[1]: /etc/systemd/system/dc-glo-mag235.service:12: WorkingDirectory= path is not absolute: ${DCFOLDER}
代わりにcd $DCFOLDER && docker-compose restart
asコマンドを試してください。ExecStart
WorkingDirectory
Executable "cd" not found in path "/usr/local/sbin:/usr/local/bin:/usr/sbin:
注:
無効WorkingDirectory
にしてから、cd
echoをチェックすると、/var/log/syslog
echoはExecStartPre
実際にこれらの変数(パス)の値を元に戻します。あまりにもよくExecStartPre
実行されました。
質問
docker-compose.yml.*
実行中のカスタムファイルがあります。既存のコンテナを再起動/停止/起動する必要があります。docker-compose
私が使用したいサービス命令を尋ねます。docker-compose.yml
そのディレクトリにcd
、orWorkingDirectory
を直接使用できるようにする必要がありますdocker-compose start
。さまざまなdocker-composeコンテナセット(異なるフォルダ)の実行中のインスタンスが複数あるので、場所を指定できる「テンプレートシステム」ファイルを作成したいと思います
EnvironmentFile
。
言い換えれば:
Example = each of these have their own Docker containers... so I want to create different systemd services for these:
/docker/folder/docker-compose.yml
/docker/folder2/docker-compose.yml
質問
ここにいくつかの質問があります。
WorkingDirectory
「環境変数」と一緒に使用できますか?そしてどのように使用できますか?ご覧のとおり、私はPassEnvironmentを使ってみました。しかし、環境ファイルがあります。私はよく理解していないようです実装するsystemd
環境を設定する時間ですWorkingDirectory
。これらのすべての「サービス」コマンドには静的定数値が必要なようです。'cd' not found in path
- これは変です。ただ簡単にできると思ったんです。ディレクトリの変更docker-compose.yml
を実行できるように、ファイルがある作業ディレクトリに移動しますdocker-compose start/restart/stop
。実際の用途は何ですか
PassEnvironment
?$(which docker-compose) ps
最後に、例えば、試みはWorkingDirectory
「一定値」を期待していたようだったので失敗しました。$(which docker-compose)
代わりに静的位置を使用したかったのです。
答え1
時にはこれは簡単かもしれません
ExecStart=/bin/bash -c "cd \"/path/${variable_subpath}/\";echo \"${PWD}\";"
そしてWorkingDirectory
完全にスキップしてください。ほとんどの場合、単純なコマンドまたはスクリプトでのみこのハッキングを回避できます。