79 lines
2.1 KiB
Markdown
79 lines
2.1 KiB
Markdown
# Run Dokku on External Volume
|
|
|
|
In order to leverage cloud-provider facilities like _attachable volumes_, (_a.k.a. block storage_)
|
|
the following is an easy tutorial to achieve Dokku runs on them.
|
|
|
|
> Warning: If the block storage is not available and attached on boot it is possible that containers will not correctly start. Please keep this in mind when considering moving Dokku and/or Docker to network attached storage.
|
|
|
|
## Tutorial
|
|
|
|
The following is intended to be executed on the dokku host machine as `root`.
|
|
Say, _for instance_, that our volume is mapped into the systems as `/dev/vdb1`.
|
|
|
|
Stop docker daemon
|
|
|
|
```shell
|
|
systemctl stop docker
|
|
```
|
|
|
|
Prepare the filesystem:
|
|
|
|
```shell
|
|
mkfs -t ext4 /dev/vdb1
|
|
mkdir /mnt/volume
|
|
mount /dev/vdb1 /mnt/volume
|
|
```
|
|
|
|
Move the old data directories:
|
|
|
|
```shell
|
|
mv /home/dokku /home/dokku.OLD
|
|
mv /var/lib/docker /var/lib/docker.OLD
|
|
mv /var/lib/dokku /var/lib/dokku.OLD
|
|
```
|
|
|
|
Move the data on the volume
|
|
|
|
```shell
|
|
mkdir /mnt/volume/home/
|
|
mkdir -p /mnt/volume/var/lib/
|
|
mv /home/dokku.OLD /mnt/volume/home/dokku
|
|
mv /var/lib/dokku.OLD /mnt/volume/var/lib/dokku
|
|
mv /var/lib/docker.OLD /mnt/volume/var/lib/docker
|
|
```
|
|
|
|
Prepare the mountpoints
|
|
|
|
```shell
|
|
mkdir /home/dokku
|
|
mkdir /var/lib/dokku
|
|
mkdir /var/lib/docker
|
|
chown dokku:dokku /home/dokku # respect the original ownership
|
|
chmod 711 /var/lib/docker # respect the original permissions
|
|
```
|
|
|
|
Mount bind
|
|
|
|
```shell
|
|
mount -o bind /mnt/volume/home/dokku /home/dokku
|
|
mount -o bind /mnt/volume/var/lib/dokku /var/lib/dokku
|
|
mount -o bind /mnt/volume/var/lib/docker /var/lib/docker
|
|
```
|
|
|
|
Start docker daemon
|
|
|
|
```shell
|
|
systemctl start docker
|
|
```
|
|
|
|
At this point all should be working fine, please check it out.
|
|
|
|
Then, let the changes be reboot-persistent
|
|
|
|
```shell
|
|
echo '/dev/vdb1 /mnt/volume ext4 defaults 0 2' | sudo tee -a /etc/fstab
|
|
echo '/mnt/volume/home/dokku /home/dokku none defaults,bind 0 0' | sudo tee -a /etc/fstab
|
|
echo '/mnt/volume/var/lib/dokku /var/lib/dokku none defaults,bind 0 0' | sudo tee -a /etc/fstab
|
|
echo '/mnt/volume/var/lib/docker /var/lib/docker none defaults,bind 0 0' | sudo tee -a /etc/fstab
|
|
```
|