我有一個使用以下命令運行的 python 腳本: python3 scan.py --api_token 5563ff177863e97a70a45dd4 --base_api_url http://101.102.34.66:4242/scanjob/ --base_report_url http://101.102.33.66:4242/ --job_id 42 當我在命令行上運行它時,它可以完美運行在我的 Dockerfile 中,我嘗試了 ARG 和 ENV 。似乎沒有一個工作#ARG api_token#ARG username#ARG password# Configure AWS arguments#RUN aws configure set aws_access_key_id $AWS_KEY \ # && aws configure set aws_secret_access_key $AWS_SECRET_KEY \ # && aws configure set default.region $AWS_REGION### copy bash script and change permissionRUN mkdir workspaceCOPY scan-api.sh /workspaceRUN chmod +x /workspace/scan-api.pyCMD ["/python3", "/workspace/scan-api.py"]那么如何在 docker 文件中定義這個標記的參數呢?運行圖像時運行的命令是什么?
3 回答

繁星淼淼
TA貢獻1775條經驗 獲得超11個贊
您可以通過兩種方式執行此操作,因為您希望在運行時覆蓋。
作為 Docker 運行命令的參數
作為 Docker 運行命令的 ENV
第一個是最簡單的,你不需要改變任何東西 Dockerfile
docker run --rm my_image python3 /workspace/scan-api.py --bar tet --api_token 5563ff177863e97a70a45dd4 --base_api_url http://101.102.34.66:4242/scanjob/ --base_report_url http://101.102.33.66:4242/ --job_id
和我的簡單腳本
import sys print ("All ARGs",sys.argv[1:])
使用 ENV,您需要更改 Dockerfile
我正在發布一種方式,您可以為所有 args 執行此操作
FROM python:3.7-alpine3.9
ENV API_TOKEN=default_token
CMD ["sh", "-c", "python /workspace/scan-api.py $API_TOKEN"]
因此,您可以在運行時覆蓋它們,或者能夠使用一些默認值運行。
docker run -it --rm -e API_TOKEN=new_token my_image

慕蓋茨4494581
TA貢獻1850條經驗 獲得超11個贊
CMD
采用與您在命令行中使用的參數完全相同的參數。
CMD ["/python3", "scan.py", "--api_token", "5563ff177863e97a70a45dd4", "--base_api_url", "http://101.102.34.66:4242/scanjob/", "--base_report_url", "http://101.102.33.66:4242/", "--job_id", "42"]
添加回答
舉報
0/150
提交
取消