fishjam-dev / fishjam

General purpose media server. Supports WebRTC, HLS, RTSP, SIP
https://fishjam-dev.github.io/fishjam-docs/
Apache License 2.0
199 stars 14 forks source link

Fix docker volume permissions for Linux. Optimize build time. #36

Closed mickel8 closed 1 year ago

mickel8 commented 1 year ago

This PR fixes docker volume permissions for Linux. In particualr, it should be possible to:

docker run -p 20000:20000/udp \ -p 4000:4000/tcp \ -e SERVER_API_TOKEN=development \ -e VIRTUAL_HOST=localhost \ -e SECRET_KEY_BASE=secret \ -v $(pwd)/out:/app/jellyfish_output \ jellyfish-my-dev

* run docker image as root  with anonymous volume but without directory on the host side
```fish
docker run -p 20000:20000/udp \
-p 4000:4000/tcp \
-e SERVER_API_TOKEN=development \
-e VIRTUAL_HOST=localhost \
-e SECRET_KEY_BASE=secret \
-v $(pwd)/out:/app/jellyfish_output \
jellyfish-my-dev

docker run -p 20000:20000/udp \ -p 4000:4000/tcp \ -u (id -u):(id -g) \ -e SERVER_API_TOKEN=development \ -e VIRTUAL_HOST=localhost \ -e SECRET_KEY_BASE=secret \ -e DOCKER_DEBUG=true \ -v $(pwd)/out:/app/jellyfish_output \ jellyfish-my-dev

* run docker image as root with named volume
```fish
docker volume create jellyfish_out

docker run -p 20000:20000/udp \
-p 4000:4000/tcp \
-e SERVER_API_TOKEN=development \
-e VIRTUAL_HOST=localhost \
-e SECRET_KEY_BASE=secret \
-v jellyfish_out:/app/jellyfish_output \
jellyfish-my-dev

docker run -p 20000:20000/udp \ -p 4000:4000/tcp \ -e SERVER_API_TOKEN=development \ -u jellyfish:jellyfish \ -e VIRTUAL_HOST=localhost \ -e SECRET_KEY_BASE=secret \ -v jellyfish_out:/app/jellyfish_output \ jellyfish-my-dev


We won't be able to run the following scenarios
* non-root user and no directory on the host side at first (seems to work on MacOS)
```fish
docker run -p 20000:20000/udp \
-p 4000:4000/tcp \
-u (id -u):(id -g) \
-e SERVER_API_TOKEN=development \
-e VIRTUAL_HOST=localhost \
-e SECRET_KEY_BASE=secret \
-v (pwd)/jellyfish_out:/app/jellyfish_output \
jellyfish-my-dev

docker run -p 20000:20000/udp \ -p 4000:4000/tcp \ -u (id -u):(id -g) \ -e SERVER_API_TOKEN=development \ -e VIRTUAL_HOST=localhost \ -e SECRET_KEY_BASE=secret \ -v jellyfish_out:/app/jellyfish_output \ jellyfish-my-dev

* non-root user and no volume at all
```fish
docker run -p 20000:20000/udp \
-p 4000:4000/tcp \
-u (id -u):(id -g) \
-e SERVER_API_TOKEN=development \
-e VIRTUAL_HOST=localhost \
-e SECRET_KEY_BASE=secret \
-e DOCKER_DEBUG=true \
jellyfish-my-dev
codecov[bot] commented 1 year ago

Codecov Report

Merging #36 (814b4b4) into main (32f5b28) will decrease coverage by 0.80%. The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main      #36      +/-   ##
==========================================
- Coverage   89.92%   89.12%   -0.80%     
==========================================
  Files          32       32              
  Lines         377      377              
==========================================
- Hits          339      336       -3     
- Misses         38       41       +3     
Impacted Files Coverage Δ
lib/jellyfish/component/hls.ex 100.00% <100.00%> (ø)

... and 1 file with indirect coverage changes


Continue to review full report in Codecov by Sentry.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update 32f5b28...814b4b4. Read the comment docs.