doc: Docker minor improvements

This commit is contained in:
ArthurHoaro 2020-09-03 11:58:09 +02:00 committed by nodiscc
parent 68855686db
commit 97870f3512

View file

@ -4,33 +4,45 @@
## Install Docker ## Install Docker
Install [Docker](https://www.docker.com/), by following the instructions relevant to your OS / distribution, and start the service. For example on [Debian](https://docs.docker.com/engine/install/debian/): Install [Docker](https://docs.docker.com/engine/install/), by following the instructions relevant to your OS / distribution, and start the service. For example on [Debian](https://docs.docker.com/engine/install/debian/):
```bash ```bash
# update your package lists # update your package lists
$ sudo apt update sudo apt update
# remove old versions # remove old versions
$ sudo apt-get remove docker docker-engine docker.io containerd runc sudo apt-get remove docker docker-engine docker.io containerd runc
# install requirements # install requirements
$ sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
# add docker's GPG signing key # add docker's GPG signing key
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add - curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
# add the repository # add the repository
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
# install docker engine # install docker engine
$ sudo apt-get update sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io sudo apt-get install docker-ce docker-ce-cli containerd.io
# Start and enable Docker service
sudo systemctl enable docker && sudo systemctl start docker
# verify that Docker is properly configured # verify that Docker is properly configured
root@stretch-shaarli-02:~$ docker run hello-world sudo docker run hello-world
``` ```
In order to run Docker commands as a non-root user, you must add the `docker` group to this user:
```bash
# Add docker group as secondary group
sudo usermod -aG docker your-user
# Reboot or logout
# Then verify that Docker is properly configured, as "your-user"
docker run hello-world
```
## Get and run a Shaarli image ## Get and run a Shaarli image
Shaarli images are available on [DockerHub](https://hub.docker.com/r/shaarli/shaarli/): Shaarli images are available on [DockerHub](https://hub.docker.com/r/shaarli/shaarli/) `shaarli/shaarli`:
- `latest`: latest branch - `latest`: latest branch (last release)
- `master`: master branch - `stable`: stable branch (last release in previous major version)
- `master`: master branch (development branch)
These images are built automatically on DockerHub and rely on: These images are built automatically on DockerHub and rely on:
@ -40,6 +52,8 @@ These images are built automatically on DockerHub and rely on:
Additional Dockerfiles are provided for the `arm32v7` platform, relying on [Linuxserver.io Alpine armhf images](https://hub.docker.com/r/lsiobase/alpine.armhf/). These images must be built using [`docker build`](https://docs.docker.com/engine/reference/commandline/build/) on an `arm32v7` machine or using an emulator such as [qemu](https://resin.io/blog/building-arm-containers-on-any-x86-machine-even-dockerhub/). Additional Dockerfiles are provided for the `arm32v7` platform, relying on [Linuxserver.io Alpine armhf images](https://hub.docker.com/r/lsiobase/alpine.armhf/). These images must be built using [`docker build`](https://docs.docker.com/engine/reference/commandline/build/) on an `arm32v7` machine or using an emulator such as [qemu](https://resin.io/blog/building-arm-containers-on-any-x86-machine-even-dockerhub/).
Here is an example of how to run Shaarli latest image using Docker:
```bash ```bash
# download the 'latest' image from dockerhub # download the 'latest' image from dockerhub
docker pull shaarli/shaarli docker pull shaarli/shaarli
@ -60,7 +74,7 @@ docker run --detach \
--rm \ --rm \
--volume shaarli-data:/var/www/shaarli/data \ --volume shaarli-data:/var/www/shaarli/data \
--volume shaarli-cache:/var/www/shaarli/cache \ --volume shaarli-cache:/var/www/shaarli/cache \
shaarli/shaarli shaarli/shaarli:latest
# verify that the container is running # verify that the container is running
docker ps | grep myshaarli docker ps | grep myshaarli
@ -74,23 +88,30 @@ docker ps -a | grep myshaarli # verify th container has been destroyed
``` ```
After running `docker run` command, your Shaarli instance should be available on the host machine at [localhost:8000](http://localhost:8000). In order to access your instance through a reverse proxy, we recommend using our [Docker Compose](#docker-compose) build.
## Docker Compose ## Docker Compose
A [Compose file](https://docs.docker.com/compose/compose-file/) is a common format for defining and running multi-container Docker applications. A [Compose file](https://docs.docker.com/compose/compose-file/) is a common format for defining and running multi-container Docker applications.
A `docker-compose.yml` file can be used to run a persistent/autostarted shaarli service using [Docker Compose](https://docs.docker.com/compose/) or in a [Docker stack](https://docs.docker.com/engine/reference/commandline/stack_deploy/). A `docker-compose.yml` file can be used to run a persistent/autostarted shaarli service using [Docker Compose](https://docs.docker.com/compose/) or in a [Docker stack](https://docs.docker.com/engine/reference/commandline/stack_deploy/).
Shaarli provides configuration file for Docker Compose, that will setup a Shaarli instance, a [Træfik](https://hub.docker.com/_/traefik/) instance with [Let's Encrypt](https://letsencrypt.org/) certificates, a Docker network, and volumes for Shaarli data and Træfik TLS configuration and certificates. Shaarli provides configuration file for Docker Compose, that will setup a Shaarli instance, a [Træfik](https://containo.us/traefik/) instance (reverse proxy) with [Let's Encrypt](https://letsencrypt.org/) certificates, a Docker network, and volumes for Shaarli data and Træfik TLS configuration and certificates.
Download docker-compose from the [release page](https://docs.docker.com/compose/install/): Download docker-compose from the [release page](https://docs.docker.com/compose/install/):
```bash ```bash
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose $ sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose $ sudo chmod +x /usr/local/bin/docker-compose
```
To run Shaarli container and its reverse proxy, you can execute the following commands:
```bash
# create a new directory to store the configuration: # create a new directory to store the configuration:
$ mkdir shaarli && cd shaarli $ mkdir shaarli && cd shaarli
# Download the current version of Shaarli's docker-compose.yml # Download the latest version of Shaarli's docker-compose.yml
$ curl -L https://raw.githubusercontent.com/shaarli/Shaarli/master/docker-compose.yml -o docker-compose.yml $ curl -L https://raw.githubusercontent.com/shaarli/Shaarli/latest/docker-compose.yml -o docker-compose.yml
# Create the .env file and fill in your VPS and domain information # Create the .env file and fill in your VPS and domain information
# (replace <MY_SHAARLI_DOMAIN> and <MY_CONTACT_EMAIL> with your actual information) # (replace <MY_SHAARLI_DOMAIN> and <MY_CONTACT_EMAIL> with your actual information)
$ echo 'SHAARLI_VIRTUAL_HOST=shaarli.mydomain.org' > .env $ echo 'SHAARLI_VIRTUAL_HOST=shaarli.mydomain.org' > .env
@ -101,9 +122,9 @@ $ docker-compose pull
$ docker-compose up -d $ docker-compose up -d
``` ```
After a few seconds, you should be able to access your Shaarli instance at [https://shaarli.mydomain.org](https://shaarli.mydomain.org) (replace your own domain name).
## Running dockerized Shaarli as a systemd service
### Running dockerized Shaarli as a systemd service
It is possible to start a dockerized Shaarli instance as a systemd service (systemd is the service management tool on several distributions). After installing Docker, use the following steps to run your shaarli container Shaarli to run on system start. It is possible to start a dockerized Shaarli instance as a systemd service (systemd is the service management tool on several distributions). After installing Docker, use the following steps to run your shaarli container Shaarli to run on system start.
@ -154,9 +175,9 @@ journalctl -f
```bash ```bash
# pull/update an image # pull/update an image
$ docker pull shaarli:release $ docker pull shaarli/shaarli:release
# run a container from an image # run a container from an image
$ docker run shaarli:latest $ docker run shaarli/shaarli:latest
# list available images # list available images
$ docker images ls $ docker images ls
# list running containers # list running containers