Я пытаюсь воспроизвести звук из своего контейнера на моем хосте, в то время как мой хост воспроизводит звук.
Этот Dockerfile работает:
# Dockerfile
FROM ubuntu:bionic
RUN apt-get update && apt-get install --no-install-recommends -y \
sox
pulseaudio
&& rm -rf /var/lib/apt/lists/*
# play sound
ENTRYPOINT play -nq -t alsa synth 5 sine 200
Однако, меня вдохновляет сохранить мой образменьше, я использовал альпийский вариант в качестве основного изображения для моего Dockerfile:
# Dockerfile
FROM alpine:latest
RUN apk update && apk add --no-cache \
sox \
pulseaudio
ENTRYPOINT play -nq -t alsa synth 5 sine 200
Я воспроизведу аудио на моем хост-компьютере, прежде чем я запусту оба образа докера, используя следующий скрипт:
# create pulseaudio socket
pactl load-module module-native-protocol-unix socket=/tmp/pulseaudio.socket
# create config for pulseaudio clients
echo "default-server = unix:/tmp/pulseaudio.socket
# Prevent a server running in container
autospawn = no
daemon-binary = /bin/true
# Prevent the use of shared memory
enable-shm = false
" >/tmp/pulseaudio.client.conf
docker run -it \
--rm \
--name sound \
--env PULSE_SERVER=unix:/tmp/pulseaudio.socket \
--env PULSE_COOKIE=/tmp/pulseaudio.cookie \
--volume /tmp/pulseaudio.socket:/tmp/pulseaudio.socket \
--volume /tmp/pulseaudio.client.conf:/etc/pulse/client.conf \
--user $(id -u):$(id -g) \
play_sound
Базовый образ Ubuntu работает должным образом, но для альпийского варианта, у меня есть следующая ошибка:
ALSA lib confmisc.c:767:(parse_card) cannot find card '0'
ALSA lib conf.c:4568:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
ALSA lib conf.c:4568:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
ALSA lib confmisc.c:1246:(snd_func_refer) error evaluating name
ALSA lib conf.c:4568:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5047:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2564:(snd_pcm_open_noupdate) Unknown PCM default
play FAIL formats: can't open output file `default': snd_pcm_open error: No such file or directory
Кто-нибудь знает, какие пакеты мне не хватает?