
This is a short overview of how to build and run XCA using docker.

Install docker
==============

To install docker, follow the instructions provided at
	https://docs.docker.com/install/

Build XCA container
===================

Use the following command to build XCA container:

	docker build --rm --tag xca .

This will build a container named "xca" using default configuration.

Build options
-------------

There are some options to customize build. Use dockers "--build-arg"
option to add options.

CODENAME              : code name of ubuntu version
                        example: --build-arg CODENAME=jammy
PARALLELMFLAGS        : make flags for parralel build
                        example: --build-arg PARALLELMFLAGS=-j2

Run XCA
=======

Once the container is built, run it using the following command:

	docker run --rm -it -e USER_ID=`id -u` --network=host \
		-e DISPLAY=$DISPLAY -e "QT_X11_NO_MITSHM=1" \
		xca

Share local directory
---------------------

Use docker volumes to share a local directory. This might be useful to store data base files.

	mkdir -p ./some_local_directory
	docker run --rm -it -e USER_ID=`id -u` --network=host \
		-e DISPLAY=$DISPLAY -e "QT_X11_NO_MITSHM=1" \
		-v ./some_local_directory:/backup \
		xca

This makes ./some_local_directory accessible in the container as /backup.

Run over X-Forwarding with SSH
------------------------------

To run with X-Forwarding over an SSH connection, you can mount .Xauthority. If the application windows doesn't show up, likely you also want to switch to OpenGL done in software:

	docker run --rm -it --network=host \
		-e DISPLAY=$DISPLAY -e "QT_X11_NO_MITSHM=1" -e LIBGL_ALWAYS_SOFTWARE=1 \
		-v $HOME/.Xauthority:/home/user/.Xauthority \
		xca

Note: the environment variable USER_ID doesn't need to be set, since USER_ID is derived from ownership of .Xauthority file.
