Building snaps within an isolated environment, such as Docker or LXD, has several advantages over a native build:
Take a look at Building on LXD to learn how to build snaps with LXD, and read on to discover how to build snaps with Docker.
To get started, first check whether Docker is already installed. This can be done with the following command (look for Hello from Docker in the output):
$ docker run hello-world ... Hello from Docker! This message shows that your installation appears to be working correctly. ...
If Docker isn’t installed, take a look at Install Docker. Ubuntu users can alternatively step through the following:
Update the package details held on your system:
$ sudo apt-get update
Download and add Docker’s third-party repository key:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
Next, add Docker’s package repository:
$ sudo add-apt-repository -u \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"
You can now install Docker from the new packages:
$ sudo apt-get install docker-ce
Finally, add your user to the docker group:
$ sudo usermod -a -G docker $USER
For more information, see Docker’s Install using the repository documentation.
ⓘ If snapcraft is not yet installed, enter
sudo snap install snapcraft --classic.
With Docker installed, first pull the latest snapcraft image:
$ docker pull snapcore/snapcraft
Make sure you’re in your project’s top-level directory, where snap/snapcraft.yaml describes how to build your snap, and enter the following command to build your snap:
$ docker run --rm -v "$PWD":/build -w /build snapcore/snapcraft bash \ -c "apt update && snapcraft"
That’s all there is to it. If the build completes successfully, you will find a
.snap file in the current directory. You can inspect its contents to ensure the snap contains all of your application’s assets:
$ unsquashfs -l *.snap