This guide helps resolve common issues when using Dock2Tauri.
Run the system status check to identify potential issues:
make status
Symptoms:
failed to run linuxdeploy
errorsSolutions:
# Skip AppImage bundling (recommended for most environments)
export DOCK2TAURI_SKIP_APPIMAGE=1
./scripts/dock2tauri.sh <image> <host-port> <container-port> --build
# OR install AppImage tools with FUSE support
make install-deps APPIMAGE=1 YES=1
# OR force AppImage in cross-compilation mode
export DOCK2TAURI_FORCE_APPIMAGE=1
Root cause: Many CI/CD environments and containers lack FUSE support required for AppImage tools.
Symptoms:
pkg-config has not been configured to support cross-compilation
aarch64-unknown-linux-gnu
Solutions:
# Install ARM64 cross-compilation toolchain
make install-deps ARM64=1 YES=1
# Setup multiarch for ARM64 dev libraries (Debian/Ubuntu)
sudo dpkg --add-architecture arm64
sudo apt update
sudo apt install -y libgtk-3-dev:arm64 libglib2.0-dev:arm64 \
libpango1.0-dev:arm64 libcairo2-dev:arm64 libgdk-pixbuf-2.0-dev:arm64
# Configure environment for ARM64 builds
export PKG_CONFIG=aarch64-linux-gnu-pkg-config
export PKG_CONFIG_SYSROOT_DIR=/
export PKG_CONFIG_PATH=/usr/lib/aarch64-linux-gnu/pkgconfig:/usr/share/pkgconfig
# Then build for ARM64
./scripts/dock2tauri.sh <image> <host-port> <container-port> --build --target=aarch64-unknown-linux-gnu
Symptoms:
cc: error: unrecognized command-line option '-arch'
objc2-exception-helper
build failuresSolutions:
# Skip macOS targets (recommended)
export DOCK2TAURI_CROSS_TARGETS="x86_64-unknown-linux-gnu"
./scripts/dock2tauri.sh <image> <host-port> <container-port> --build --cross
# OR install osxcross (advanced)
# See: https://github.com/tpoechtrager/osxcross
Root cause: macOS cross-compilation requires Apple SDK and osxcross toolchain.
Symptoms:
pkg-config has not been configured to support cross-compilation
Solutions:
# Install ARM64 multiarch support (Ubuntu/Debian)
sudo dpkg --add-architecture arm64
sudo apt update
sudo apt install -y libgtk-3-dev:arm64 libglib2.0-dev:arm64 libpango1.0-dev:arm64 libcairo2-dev:arm64 libgdk-pixbuf-2.0-dev:arm64
# Configure pkg-config for cross-compilation
export PKG_CONFIG=aarch64-linux-gnu-pkg-config
export PKG_CONFIG_SYSROOT_DIR=/
export PKG_CONFIG_PATH=/usr/lib/aarch64-linux-gnu/pkgconfig:/usr/share/pkgconfig
# Verify pkg-config works
aarch64-linux-gnu-pkg-config --exists gtk+-3.0
# Skip problematic targets temporarily
export DOCK2TAURI_CROSS_TARGETS="x86_64-unknown-linux-gnu"
./scripts/dock2tauri.sh image 8088 80 --build --cross
Root cause: ARM64 cross-compilation requires proper sysroot, multiarch libraries, and pkg-config configuration for the target architecture.
Symptoms:
file /usr/bin/my-tauri-app from install of... conflicts with file from package...
Solutions:
# Option 1: Remove old package first (recommended)
rpm -qa | grep dock2
sudo rpm -e <old-package-name>
sudo rpm -i <new-package.rpm>
# Option 2: Use upgrade instead of install
sudo rpm -U <new-package.rpm>
# Option 3: Remove with dependencies ignored
sudo rpm -e --nodeps <old-package-name>
sudo rpm -i <new-package.rpm>
Root cause: Each build creates RPM with same package name and file paths but different timestamps, causing conflicts.
Automatic resolution: Dock2Tauri now automatically detects and attempts to remove conflicting packages before building. However, this requires sudo access and may fail in non-interactive environments.
Symptoms:
Solutions:
# Check Tauri CLI version
cargo tauri --version
# Ensure Tauri v2 compatibility
cargo install tauri-cli --version "^2.0"
# Regenerate configuration
rm -f /tmp/tauri.conf.*
./scripts/dock2tauri.sh <image> <host-port> <container-port> --build
Symptoms:
permission denied while trying to connect to the Docker daemon socket
Solutions:
# Add user to docker group
sudo usermod -aG docker $USER
# Re-login or activate group
newgrp docker
# Verify access
docker ps
Symptoms:
bind: address already in use
Solutions:
# Check what's using the port
sudo netstat -tulpn | grep :<port>
sudo lsof -i :<port>
# Stop conflicting containers
make stop-all
# Use a different port
./scripts/dock2tauri.sh <image> <different-port> <container-port>
Symptoms:
Solutions:
# Check container logs
docker logs <container-name>
# Debug container directly
docker run -it --rm <image> /bin/sh
# Use custom health check URL
./scripts/dock2tauri.sh <image> <host-port> <container-port> \
--health-url=http://localhost:<port>/health --timeout=60
Symptoms:
install_deps.sh
tries to use apt-get
on Fedora systemsapt
and dnf
)Root cause:
Systems with both apt
and dnf
installed (common in development environments) may have the installer script incorrectly detect apt
as the primary package manager on Fedora-based systems.
Solutions:
# Option 1: Use the corrected install script (recommended)
make install-deps YES=1
# Option 2: Manual installation with correct package manager
# For Fedora/RHEL/CentOS systems:
sudo dnf install -y @development-tools curl pkgconf-pkg-config \
gtk3-devel libappindicator-gtk3 librsvg2-tools patchelf file rpm-build \
webkit2gtk4.0-devel glib2-devel cairo-devel pango-devel gdk-pixbuf2-devel atk-devel
# Option 3: Verify which package manager to use
cat /etc/os-release # Check your OS ID
# If ID=fedora, use dnf; if ID=ubuntu/debian, use apt
Prevention:
The issue has been fixed in the latest version of scripts/install_deps.sh
which now prioritizes package manager detection based on OS ID rather than command availability.
Symptoms:
The repository does not have a Release file
Solutions:
# Check Ubuntu version
cat /etc/os-release
# Fix sources.list for your Ubuntu version
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
# For Ubuntu 20.04 LTS (focal)
sudo tee /etc/apt/sources.list << EOF
deb http://archive.ubuntu.com/ubuntu focal main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu focal-updates main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu focal-security main restricted universe multiverse
EOF
# Or use closest mirror
sudo sed -i 's|http://archive.ubuntu.com|http://us.archive.ubuntu.com|g' /etc/apt/sources.list
sudo apt update
Symptoms:
libgtk-3-dev
not foundpkg-config
missingSolutions:
# Install base dependencies
make install-deps YES=1
# Manual installation (Debian/Ubuntu)
sudo apt update
sudo apt install -y build-essential curl pkg-config libgtk-3-dev \
libayatana-appindicator3-dev librsvg2-dev patchelf file rpm
# Manual installation (Fedora/RHEL)
sudo dnf install -y @development-tools curl pkgconf-pkg-config \
gtk3-devel libappindicator-gtk3 librsvg2-tools patchelf file rpm-build
# Additional GTK/WebKit dependencies needed for Tauri
sudo dnf install -y webkit2gtk4.0-devel glib2-devel cairo-devel pango-devel gdk-pixbuf2-devel atk-devel
# Manual installation (Arch/Manjaro)
sudo pacman -Sy --needed base-devel curl pkgconf gtk3 librsvg patchelf file rpm-tools
Symptoms:
Solutions:
# Enable parallel compilation
export CARGO_BUILD_JOBS=$(nproc)
# Use release build optimizations
export CARGO_PROFILE_RELEASE_LTO=false
# Skip unnecessary targets
export DOCK2TAURI_CROSS_TARGETS="x86_64-unknown-linux-gnu"
# Use cargo cache
cargo install sccache
export RUSTC_WRAPPER=sccache
Symptoms:
Solutions:
# Strip debug symbols
export CARGO_PROFILE_RELEASE_STRIP=true
# Optimize bundle configuration
export CARGO_PROFILE_RELEASE_CODEGEN_UNITS=1
export CARGO_PROFILE_RELEASE_PANIC=abort
Symptoms:
Gdk-Message: Unable to load webkit2gtk-web-extension
Solutions: These warnings are harmless and can be ignored. They don’t affect functionality.
Symptoms:
Solutions:
# Check system requirements
pkg-config --modversion gtk+-3.0
pkg-config --modversion webkit2gtk-4.0
# Run in development mode for debugging
cargo tauri dev
# Check for missing libraries
ldd ./target/release/my-tauri-app
# Install missing WebKitGTK dependencies
sudo apt install -y webkit2gtk-4.0-dev # Debian/Ubuntu
sudo dnf install -y webkit2gtk3-devel # Fedora/RHEL
Symptoms:
Solutions:
# .github/workflows/build.yml
- name: Set up Docker
uses: docker/setup-buildx-action@v2
- name: Skip AppImage in CI
run: echo "DOCK2TAURI_SKIP_APPIMAGE=1" >> $GITHUB_ENV
- name: Install dependencies
run: make install-deps YES=1
Symptoms:
Solutions:
# Install Docker Desktop for Windows with WSL2 integration
# OR install Docker in WSL
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
# For GUI support in WSL2
sudo apt install -y xvfb
export DISPLAY=:99
Xvfb :99 -screen 0 1024x768x24 &
Enable verbose logging for all operations:
export DOCK2TAURI_DEBUG=1
./scripts/dock2tauri.sh <image> <host-port> <container-port>
Symptoms:
./dist
directory--output-dir
argument ignoredSolutions:
# Ensure proper argument syntax (use = sign)
./scripts/dock2tauri.sh --output-dir="/path/to/builds" nginx:alpine 8088 80 --build
# Check resolved export path in logs
# Should show: "Resolved export path: /path/to/builds"
# Verify directory permissions
mkdir -p "/path/to/builds" && ls -la "/path/to/builds"
Symptoms:
⚠️ Partial copy to: /dir
warnings❌ Failed to create directory
errorsSolutions:
# Check directory permissions and create manually
sudo mkdir -p /target/directory
sudo chown $USER:$USER /target/directory
# Use comma-separated paths without spaces
--copy-to="/home/user/apps,/opt/deployments"
# Verify paths exist and are writable
ls -la /target/parent/directory
Symptoms:
productName
not updated in tauri.conf.jsonSolutions:
# Verify custom app name parsing in logs
# Should show: "Using custom app name: MyApp"
# Check .env configuration
cat .env | grep CUSTOM_APP_NAME
# Ensure no special characters in app name
--app-name="MyCleanAppName" # Good
--app-name="My/App:Name" # Problematic
Symptoms:
.env
file not loadedSolutions:
# Verify .env file exists and is readable
ls -la .env
cat .env
# Recreate from example if corrupted
cp .env.example .env
# Check environment loading in logs
# Should show: "✅ Configuration loaded from .env"
# Manual verification
source .env && echo $OUTPUT_DIR
make status
# System information
uname -a
docker --version
cargo --version
cargo tauri --version
# Dock2Tauri environment
echo "DOCK2TAURI_* environment variables:"
env | grep DOCK2TAURI
When reporting issues, please include:
make status