Dockerfile 中 ENTRYPOINT 與 CMD 的差異
建立 power.sh Bash Shell Script
#!/bin/bash
#取得 JSON 資料並解析
json_data=$(curl -s -k https://data.taipower.com.tw/opendata/apply/file/d006020/001.json)
yday_maxi_sply_capacity=$(echo "$json_data" | jq -r '.records[2].yday_maxi_sply_capacity')
fore_maxi_sply_capacity=$(echo "$json_data" | jq -r '.records[1].fore_maxi_sply_capacity')
yday_peak_dema_load=$(echo "$json_data" | jq -r '.records[2].yday_peak_dema_load')
fore_peak_dema_load=$(echo "$json_data" | jq -r '.records[1].fore_peak_dema_load')
publish_time=$(echo "$json_data" | jq -r '.records[1].publish_time')
#比較並顯示結果
fore_maxi_sply_capacity=${fore_maxi_sply_capacity%.*}
yday_maxi_sply_capacity=${yday_maxi_sply_capacity%.*}
fore_peak_dema_load=${fore_peak_dema_load%.*}
yday_peak_dema_load=${yday_peak_dema_load%.*}
if [ $fore_maxi_sply_capacity -gt $yday_maxi_sply_capacity ]; then
result="預估供電能力有增加"
else
result="預估供電能力有下降"
fi
echo "資料時間: ${publish_time}"
echo "昨日最大供電能力: " $yday_maxi_sply_capacity
echo "預估今日最大供電能力: " $fore_maxi_sply_capacity
echo "比較結果: " "$result"
echo "昨日最大用電量: " $yday_peak_dema_load
echo "預估今日最大用電量: " $fore_peak_dema_load
設定 power.sh Bash Shell Script 可以執行
chmod +x power.sh
建立 Dockerfile,內容如下:
FROM rockylinux:8.7
RUN dnf update -y
RUN dnf install -y curl
RUN dnf install -y jq
COPY power.sh /usr/bin/power.sh
CMD /usr/bin/power.sh
建立 power:1 Docker Image
docker build -t power:1 .
修改 Dockerfile,內容如下:
FROM rockylinux:8.7
RUN dnf update -y
RUN dnf install -y curl
RUN dnf install -y jq
COPY power.sh /usr/bin/power.sh
WORKDIR /usr/bin
ENTRYPOINT ["power.sh"]
建立 power:2 Docker Image
docker build -t power:2 .
分別運行這兩個 Images
兩個 Container 都可以如預期般的執行
docker run -it --name p1 power:1
docker run -it --name p2 power:2
刪除 p1 & p2 Containers
docker rm p1 p2
這次 run Container 時,要求執行 Bash Shell
docker run -it --name p1 power:1 bash
exit
docker run -it --name p2 power:2 bash
0 意見:
張貼留言