1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
|
version: '3.8'
services:
# Base image with all build dependencies
js8call-base:
build:
context: .
dockerfile: Dockerfile.base
image: js8call-base:ubuntu-24.04
# Hamlib builder (depends on base)
hamlib-builder:
build:
context: .
dockerfile: Dockerfile.hamlib
cache_from:
- js8call-base:ubuntu-24.04
- js8call-hamlib:latest
image: js8call-hamlib:latest
depends_on:
- js8call-base
# Main build service
js8call-build:
build:
context: ..
dockerfile: docker/Dockerfile
target: output
cache_from:
- js8call-base:ubuntu-24.04
- js8call-hamlib:latest
- js8call-builder:ubuntu-24.04
args:
BUILDKIT_INLINE_CACHE: 1
image: js8call-builder:ubuntu-24.04
container_name: js8call-build
volumes:
- ./output:/output
- ccache:/ccache
environment:
- CCACHE_DIR=/ccache
command: |
sh -c "cp /*.deb /*.AppImage /output/ 2>/dev/null || true"
depends_on:
- hamlib-builder
# Development build with shell access
js8call-dev:
build:
context: ..
dockerfile: docker/Dockerfile
target: development
cache_from:
- js8call-base:ubuntu-24.04
- js8call-hamlib:latest
image: js8call-dev:ubuntu-24.04
container_name: js8call-dev
volumes:
- ..:/js8call-prefix/src
- ./output:/output
- ccache:/ccache
environment:
- CCACHE_DIR=/ccache
working_dir: /js8call-prefix/build
command: /bin/bash
stdin_open: true
tty: true
depends_on:
- hamlib-builder
# Quick rebuild service (uses existing images)
js8call-rebuild:
build:
context: ..
dockerfile: docker/Dockerfile
target: js8call-builder
cache_from:
- js8call-builder:ubuntu-24.04
image: js8call-rebuild:latest
volumes:
- ccache:/ccache
environment:
- CCACHE_DIR=/ccache
depends_on:
- hamlib-builder
# Runtime service for running JS8Call with GUI
js8call-runtime:
build:
context: .
dockerfile: Dockerfile.runtime
image: js8call-runtime:ubuntu-24.04
container_name: js8call-runtime
environment:
- DISPLAY=${DISPLAY}
- XAUTHORITY=/tmp/.docker.xauth
- PULSE_SERVER=unix:/tmp/pulse-socket
volumes:
- /tmp/.X11-unix:/tmp/.X11-unix:rw
- /tmp/.docker.xauth:/tmp/.docker.xauth:rw
- ./output/js8call-x86_64.AppImage:/opt/js8call/js8call.AppImage:ro
- ~/.config/JS8Call:/home/js8call/.config/JS8Call
# Audio - PulseAudio socket (adjust path as needed)
- /run/user/1000/pulse/native:/tmp/pulse-socket
devices:
- /dev/dri
- /dev/snd
network_mode: host
stdin_open: true
tty: true
volumes:
ccache:
driver: local
|