在DockerFile中加入以下指令
#安装声音播放程序alsa-utils RUN apt-get update RUN apt-get install alsa-utils
docker启动时增加“–device /dev/snd”和“–privileged”参数
docker run -d -p 8080:8080 --restart=always --privileged --device /dev/snd --name raspi raspi:$CI_COMMIT_TAG
#安装声音播放程序alsa-utils RUN apt-get update RUN apt-get install alsa-utils
docker run -d -p 8080:8080 --restart=always --privileged --device /dev/snd --name raspi raspi:$CI_COMMIT_TAG
官方编译的wiringpi在32位下编写的,因此在64位系统中运行会出现如下错误:
虽然有大神提供了自己编译的64位wiringpi,但是依然不行,资料如下:
https://github.com/guation/WiringPi-arm64
https://gitee.com/guation/WiringPi-arm64
一般docker运行java程序是会使用openjdk:8的镜像,但是树莓派虽然是64位硬件,但wiringpi只能运行在32位的OS中,因此若需要操作gpio则只能使用32位的OS。再加上openjdk:8并没有提供arm版本,因此需要指定成armv7版本的jdk镜像才能成功打包docker镜像:
#FROM openjdk:8 #指定armv7版本的java8 FROM balenalib/armv7hf-openjdk
COPY ./wiringpi-2.61-1-armhf.deb /wiringpi-2.61-1-armhf.deb RUN dpkg -i /wiringpi-2.61-1-armhf.deb