簡體   English   中英

作為服務運行 Docker - 環境變量

[英]Running Docker as a Service - Environment Variables

我正在嘗試在我的 linux 服務器中運行我的 docker 容器,並將其配置為 systemd 單元以進行自我管理。 我的 /etc/systemd/system/system.service 文件包含這一行:

[Unit]
Description=Your Container Name
After=docker.service
Requires=docker.service
StartLimitInterval=200
StartLimitBurst=10

[Service]
TimeoutStartSec=0
Restart=always
RestartSec=2
ExecStartPre=-/usr/bin/docker exec %n stop
ExecStartPre=-/usr/bin/docker rm %n
ExecStartPre=/usr/bin/bash -c 'docker login -u AWS -p $(aws ecr get-login-password --region eu-west-1) 0123456789.dkr.ecr.eu-west-1.amazonaws.com'
ExecStartPre=/usr/bin/docker pull 0123456789.dkr.ecr.eu-west-1.amazonaws.com/your-container:latest
ExecStart=/usr/bin/docker run --rm --name %n 0123456789.dkr.ecr.eu-west-1.amazonaws.com/your-container:latest -e env_var1=abc -e env_var2=def

[Install]
WantedBy=multi-user.target

這已被證明是有問題的,因為當我重新啟動服務並檢查狀態時,它顯示了這個錯誤:

● docker.name.service - name
   Loaded: loaded (/etc/systemd/system/docker.name.service; disabled; vendor preset: disabled)
   Active: failed (Result: start-limit) since Thu 2022-03-10 19:28:06 UTC; 6min ago
  Process: 11029 ExecStart=/usr/bin/docker run --rm --name %n 0123456789.dkr.ecr.eu-west-1.amazonaws.com/your-container:latest -e env_var1=abc -e env_var2=def (code=exited, status=127)
  Process: 11018 ExecStartPre=/usr/bin/docker pull 0123456789.dkr.ecr.eu-west-1.amazonaws.com/your-container:latest (code=exited, status=0/SUCCESS)
  Process: 10984 ExecStartPre=/usr/bin/bash -c docker login -u AWS -p $(aws ecr get-login-password --region eu-west-1) 0123456789.dkr.ecr.eu-west-1.amazonaws.com/your-container:latest (code=exited, status=0/SUCCESS)
  Process: 10973 ExecStartPre=/usr/bin/docker rm %n (code=exited, status=1/FAILURE)
  Process: 10951 ExecStartPre=/usr/bin/docker exec %n stop (code=exited, status=1/FAILURE)
 Main PID: 11029 (code=exited, status=127)
Process: 8174 ExecStart=/usr/bin/docker run --rm --name %n 0123456789.dkr.ecr.eu-west-1.amazonaws.com/your-container:latest -e env_var1=abc -e env_var2=def (code=exited, status=127)

刪除 docker -e options env_var1=abc -e env_var2=def 並重新啟動服務然后允許服務正確啟動。 如何讓這些環境變量從服務傳遞到 docker 容器? 他們很重要。

docker run將圖像名稱之后的所有內容視為傳遞給容器的命令,用CMD覆蓋 Dockerfile 中配置的任何內容。

要為容器本身提供環境變量,您的-e選項需要出現在圖像名稱之前:

ExecStart=/usr/bin/docker run --rm --name %n  -e env_var1=abc -e env_var2=def 0123456789.dkr.ecr.eu-west-1.amazonaws.com/your-container:latest

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM