簡體   English   中英

如何使用 docker 編譯 Arduino 程序?

[英]How do you compile Arduino programs using docker?

我想使用 docker 編譯 arduino 程序。

這是我的 Dockerfile:

FROM zoobab/arduino-cli

然后我構建docker鏡像並像這樣運行它:

$docker build -t test .

$docker run -v C:/test/MyFirstSketch:/root/MyFirstSketch -it test

(Dockerfile 在 /test/ 中,而我的 Arduino Sketch - MyFirstSketch.ino - 在 /MyFirstSketch/ 中)。

當容器運行時,在命令提示符下,我為 arduino-cli 輸入以下命令,它們工作並且我在 /MyFirstSketch 中的代碼按預期編譯。

$arduino-cli core update-index

$arduino-cli core install arduino:avr

$arduino-cli compile --fqbn arduino:avr:uno MyFirstSketch

現在,為了改進這一點,我想將上面的代碼放在一個名為 mycommands.bash 的 bash 文件中,並能夠在 docker 中運行它。

我的 Dockerfile 和 docker run 命令應該是什么? 對於我嘗試過的 Dockerfile:

FROM zoobab/arduino-cli

FROM ubuntu:xenial

ADD mycommands.bash ./

mycommands.bash 包含上面列出的命令。

這是輸出:

./mycommands.bash: line 2: arduino-cli: command not found

./mycommands.bash: line 3: arduino-cli: command not found

./mycommands.bash: line 4: arduino-cli: command not found

謝謝!

很抱歉這么說,但問題在於您的 Dockerfile。

你不能像這樣組合兩個圖像。 您使用的最后一個圖像 (last FROM) 是運行腳本的圖像。

您將 Dockerfile(偶然)實現為 MultiStage-Build: https ://docs.docker.com/v17.09/engine/userguide/eng-image/multistage-build/#use-multi-stage-builds

這應該有效:

FROM zoobab/arduino-cli

COPY mycommands.bash .
CMD ["./mycommands.bash"]

暫無
暫無

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

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