[![Build Status](https://travis-ci.org/martialblog/docker-limesurvey.svg?branch=master)](https://travis-ci.org/martialblog/docker-limesurvey) [![](https://images.microbadger.com/badges/image/martialblog/limesurvey.svg)](https://microbadger.com/images/martialblog/limesurvey "Get your own image badge on microbadger.com") # LimeSurvey Docker Dockerfile to build a [LimeSurvey](https://limesurvey.org) Image for the Docker container platform. # Using the apache image The apache image comes with an Apache Webserver and PHP installed. # Apache Configuration To change to Apache Webserver configuration, mount a Volume into the Container at: - /etc/apache2/sites-available/000-default.conf See the example configuration provided. # Using the fpm image To use the fpm image, you need an additional web server that can proxy http-request to the fpm-port of the container. See *docker-compose.fpm.yml* for example. # Using the fpm image with https If you would like to run the fpm setup with https, you can get a free certificate from Letsencrypt. As an example, the configuration in *docker-compose.fpm-certbot.yml* will take care of getting a certificate and installing it. Please note that you will have to adjust the domain name in the file *examples/nginx-certbot.conf* to match the domain used in the *HOSTNAMES* variable in the docker-compose configuration file. If you added both the a domain and the hostname *www* within the domain, *nginx-certbot.conf* needs to contain the domain without the hostname. E.g. if you set *"HOSTNAMES=example.org www.example.org"*, the path in *nginx-certbot.conf* needs to contain *example.org*. # Using an external database LimeSurvey requires an external database (MySQL, PostgreSQL) to run. See *docker-compose.yml* for example. # Persistent data To preserve the uploaded files assign the upload folder into a volume. See *docker-compose.yml* for example. Path: */var/www/html/upload/surveys* **Hint**: The mounted directory must be owned by the webserver user (e.g. www-data) # LimeSurvey Configuration The entrypoint will create a new config.php if none is provided and run the LimeSurvey command line interface for installation. **Hint**: Changing the *ADMIN_* configuration has no effect after the initial configuration. It's best to do this within the application. To change to LimeSurvey configuration, you can mount a Volume into the Container at: - /my-data/config.php:/var/www/html/application/config/config.php **Hint**: If this configuration is present before the installation, the LimeSurvey Web Installer will not run automatically. ## Data Encryption LimeSurvey 4 supports data encryption, this image give you these options: * Provide a security.php file directly (volume) * Provide encryption keys for the security.php file (environment variables) * Provide nothing and get a non-persistent security.php file For further details on the settings see: https://manual.limesurvey.org/Data_encryption # Environment Variables | Parameter | Description | | --------- | ----------- | | DB_TYPE | Database Type to use. mysql or pgsql | | DB_HOST | Database server hostname | | DB_PORT | Database server port | | DB_SOCK | Database unix socket instead of host/port | | DB_NAME | Database name | | DB_TABLE_PREFIX | Database table prefix | | DB_USERNAME | Database user | | DB_PASSWORD | Database user's password | | ADMIN_USER | Initial LimeSurvey Admin User | | ADMIN_NAME | Initial LimeSurvey Admin Username | | ADMIN_EMAIL | Initial LimeSurvey Admin Email | | ADMIN_PASSWORD | Initial LimeSurvey Admin Password | | PUBLIC_URL | Public URL for public scripts | | URL_FORMAT | URL Format. path or get | | DEBUG | Debug level (0, 1, 2). Default: 0 | | DEBUG_SQL | SQL Debug level (0, 1, 2). Default 0 | | ENCRYPT_KEYPAIR | Data encryption keypair | | ENCRYPT_PUBLIC_KEY | Data encryption public key | | ENCRYPY_SECRET_KEY | Data encryption secret key | For further details on the settings see: https://manual.limesurvey.org/Optional_settings#Advanced_Path_Settings # Running this image with docker-compose The easiest way to get a fully featured and functional setup is using a docker-compose file. Several examples are provided in the [repository](https://github.com/martialblog/docker-limesurvey). ``` docker-compose up # Frontend http://localhost:8080/ # Backend http://localhost:8080/index.php/admin ``` # References - https://www.limesurvey.org/ - https://github.com/LimeSurvey/LimeSurvey/