computer_science:docker:docker_dokuwiki_portable

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
computer_science:docker:docker_dokuwiki_portable [2020/07/19 21:13] – old revision restored (2020/07/17 05:59) carlossousacomputer_science:docker:docker_dokuwiki_portable [2023/12/01 12:07] (current) – external edit 127.0.0.1
Line 1: Line 1:
 ====== Docker - DokuWiki (with docker volume host directory for portability and direct access to data) ====== ====== Docker - DokuWiki (with docker volume host directory for portability and direct access to data) ======
  
-This documentation was done using **Ubuntu Server 20.04 LTS** as a VirtualMachine, virtualized via **VirtualBox 6.1.8.**+The main objective is to have:
  
-Ubuntu was configured to use LVM.+  - Easy to backup / restore data from DokuWiki a.k.a. sleeping with mind at ease. 
 +  - Easy portability a.k.a. I can have the Wiki run from my own Laptop in case of a major failure 
 +  - Small footprint a.k.a. A VM would take something between 10-20 GB to take with me. This way I can take the Docker Image and it's data in less then 2 GB. 
 + 
 +This documentation was done using **Ubuntu Server 20.04 LTS**  as a VirtualMachine, virtualized via **VirtualBox 6.1.8. **Ubuntu was configured to use LVM
 + 
 +This documentation was also used successfully to deploy to a VPS. 
 + 
 +I will be using a pre-made image from [[https://hub.docker.com/u/mprasil|https://hub.docker.com/u/mprasil]], found under [[https://hub.docker.com/r/mprasil/dokuwiki|https://hub.docker.com/r/mprasil/dokuwiki]]. A copy of the Documentation from the Docker Image can be found [[:computer_science:docker:references:mprasil_dokuwiki|here]].
  
 I'm assuming you already have Docker and Docker-Compose installed. I'm assuming you already have Docker and Docker-Compose installed.
  
-if not, go ahead and install them (sudo apt-get install docker -y && sudo apt-get install docker-compose -y)+If not, go ahead and install them:
  
-|First, after installing Ubuntu, we should expand the LVM to use the entire Fee Space available. This is/was an issue at the time of writing (17/07/2020)|<code>+<code bash> 
 +sudo apt install docker -y && sudo apt install docker-compose -y 
 + 
 + 
 +</code> 
 + 
 +---- 
 + 
 +===== Preparations due to LVM ===== 
 + 
 +First, after installing Ubuntu, we should expand the LVM to use the entire Free Space available. This is/was an issue at the time of writing (17/07/2020) 
 + 
 +<code bash>
 sudo lvm sudo lvm
  
-</code>     <code bash>+ 
 +</code> 
 + 
 +<code bash>
 lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
  
  
-</code>     <code bash>+</code> 
 + 
 +<code bash>
 exit exit
  
  
-</code>     <code bash>+</code> 
 + 
 +<code bash>
 sudo resize2fs /dev/ubuntu-vg/ubuntu-lv sudo resize2fs /dev/ubuntu-vg/ubuntu-lv
  
  
-</code>       Confirm with:  <code bash>+</code> 
 + 
 +Confirm with: 
 + 
 +<code bash>
 df -h df -h
  
  
-</code>       | +</code> 
-|Let's add ourselfs to the Docker Group so we don't have to prefix every command from Docker with 'sudo'|<code bash>+ 
 +---- 
 + 
 + 
 +===== Avoiding "sudo docker command" ===== 
 + 
 +Let's add ourselfs to the Docker Group so we don't have to prefix every Docker command with 'sudo' 
 + 
 +<code bash>
 sudo gpasswd -a $USER docker sudo gpasswd -a $USER docker
  
-</code>     | + 
-|Now let'create docker volume, which points to a local folder, so we can manipulate / migrate / backup the data easily if needed.| \\ General: +</code> 
-            <code bash> + 
-docker volume create --driver local \+---- 
 + 
 +===== Creating the Volumes for Data ===== 
 + 
 +Now we need to create the docker volumes, which points to a local folder, so we can manipulate / migrate / backup the data easily if needed. 
 + 
 +^General Example^Pratical Example| 
 +|<code bash> 
 +docker volume create 
 +--driver local \
 --opt type=none \ --opt type=none \
 --opt device=/home/user/test \ --opt device=/home/user/test \
Line 42: Line 90:
  
  
-</code>       Practical Example: \\ <code bash> +</code>       |<code bash> 
-asd+docker volume create \ 
 +--driver local \ 
 +--opt type=none \ 
 +--opt device=/media/docker-user/dokuwiki/storage/data \ 
 +--opt o=bind dokuwiki_data 
 + 
 + 
 +</code>       | 
 + 
 +We can either create all volumes and directories necessary manually, or use this script - **create_volumes.sh**  - to create the folders and volumes in one go: 
 + 
 +<code bash> 
 +#!/bin/bash 
 +STORAGE_PATH="/home/docker-user/dokuwiki" 
 +mkdir -p "$STORAGE_PATH"/storage/{data,conf,lib/plugins,lib/tpl,logs} 
 +docker volume create --driver local --opt type=none --opt device="$STORAGE_PATH"/storage/data --opt o=bind dokuwiki_data 
 +docker volume create --driver local --opt type=none --opt device="$STORAGE_PATH"/storage/conf --opt o=bind dokuwiki_conf 
 +docker volume create --driver local --opt type=none --opt device="$STORAGE_PATH"/storage/lib/plugins --opt o=bind dokuwiki_lib-plugins 
 +docker volume create --driver local --opt type=none --opt device="$STORAGE_PATH"/storage/lib/tpl --opt o=bind dokuwiki_lib-tpl 
 +docker volume create --driver local --opt type=none --opt device="$STORAGE_PATH"/storage/logs --opt o=bind dokuwiki_logs 
 + 
 + 
 +</code> 
 + 
 +---- 
 + 
 +===== Creating the docker-compose.yml file ===== 
 + 
 +After that we can create our **docker-compose.yml**  which will be used to manage our container: 
 + 
 +<code bash> 
 +version: '2' 
 + 
 +volumes: 
 +    dokuwiki_data: 
 +        external: true 
 +    dokuwiki_conf: 
 +        external: true 
 +    dokuwiki_lib-plugins: 
 +        external: true 
 +    dokuwiki_lib-tpl: 
 +        external: true 
 +    dokuwiki_logs: 
 +        external: true 
 + 
 +services: 
 +  dokuwiki: 
 +    image: 'mprasil/dokuwiki' 
 +    ports: 
 +      - '80:80' 
 +    volumes: 
 +        - dokuwiki_data:/dokuwiki/data 
 +        - dokuwiki_conf:/dokuwiki/conf 
 +        - dokuwiki_lib-plugins:/dokuwiki/lib/plugins 
 +        - dokuwiki_lib-tpl:/dokuwiki/lib/tpl 
 +        - dokuwiki_logs:/var/log 
 + 
 + 
 +</code> 
 + 
 +---- 
 + 
 +===== Starting the Container ===== 
 + 
 +Finally, if you already have Data from your previous DokuWiki, you can just copy/paste them in those previous created folders. Else you will just start a new DokuWiki once you start up the container. A few usefull commands to manage the container with docker-compose 
 + 
 +^Command^Purpose| 
 +|docker-compose up -d|Starts the Container and dettach (so you have your bash prompt back)| 
 +|docker-compose down|Stops the Container| 
 +|docker-compose ps|Checks the status of the Container| 
 + 
 +Your container should now be accessible via [[http://<VM/HOST_IP|http://<VM/HOST_IP]]>
 + 
 +Do note that https:// isn't available, since the container isn't listening on port 443. // 
 + 
 +---- 
 + 
 +===== Backing Up / Migrating the Data ===== 
 + 
 +We can easily migrate the data by grabbing everything in the mounted volumes and collecting them into a tar(ball). 
 + 
 +To do that we can create a file called **backtup_to_tar.sh** which when run will grab everything from //SOURCE_PATH// and output it into //BACKUP_PATH// with the name "dokuwiki_backup-date-time.tar" ex.: dokuwiki_backup-2020-07-24-13-21.tar 
 +<code bash> 
 +#!/bin/bash 
 +SOURCE_PATH="/home/docker-user/dokuwiki" 
 +BACKUP_PATH="/home/docker-user/backups" 
 +BACKUP_NAME="dokuwiki_backup" 
 +tar cvf "$BACKUP_PATH"/"$BACKUP_NAME"-$(date +"%Y-%m-%d-%H-%M").tar -C "$SOURCE_PATH"
  
-</code>  | 
  
-\\+</code>
  
  
  • computer_science/docker/docker_dokuwiki_portable.1595193199.txt.gz
  • Last modified: 2023/12/01 12:07
  • (external edit)