pull/35/merge
Antoine Guyon 5 years ago committed by GitHub
commit 3d1dd673f7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -0,0 +1,23 @@
name: Docker GLPI Build
#on: [push]
on: [workflow_dispatch]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: docker login
env:
DOCKER_USER: ${{ secrets.DOCKER_USER }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
run: |
docker login -u $DOCKER_USER -p $DOCKER_PASSWORD
- name: docker build glpi
run: |
docker build . -t aguyonnet/glpi:$(curl -s https://api.github.com/repos/glpi-project/glpi/releases/latest | grep tag_name | cut -d '"' -f 4) -t aguyonnet/glpi:latest
- name: docker push
run: |
docker push aguyonnet/glpi:$(curl -s https://api.github.com/repos/glpi-project/glpi/releases/latest | grep tag_name | cut -d '"' -f 4)
docker push aguyonnet/glpi:latest

@ -1,7 +1,7 @@
#On choisit une debian #On choisit une debian
FROM debian:10.4 FROM debian:latest
MAINTAINER DiouxX "github@diouxx.be" MAINTAINER Aguyonnet "f.guyonantoine@gmail.com"
#Ne pas poser de question à l'installation #Ne pas poser de question à l'installation
ENV DEBIAN_FRONTEND noninteractive ENV DEBIAN_FRONTEND noninteractive
@ -9,7 +9,9 @@ ENV DEBIAN_FRONTEND noninteractive
#Installation d'apache et de php7.3 avec extension #Installation d'apache et de php7.3 avec extension
RUN apt update \ RUN apt update \
&& apt install --yes --no-install-recommends \ && apt install --yes --no-install-recommends \
apt-utils \
apache2 \ apache2 \
apache2-utils \
php7.3 \ php7.3 \
php7.3-mysql \ php7.3-mysql \
php7.3-ldap \ php7.3-ldap \
@ -32,9 +34,10 @@ jq \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*
#Copie et execution du script pour l'installation et l'initialisation de GLPI #Copie et execution du script pour l'installation et l'initialisation de GLPI
COPY glpi-start.sh /opt/ COPY glpi-start.sh glpi-install.sh /opt/
RUN chmod +x /opt/glpi-start.sh RUN chmod +x /opt/glpi-start.sh /opt/glpi-install.sh
RUN bash /opt/glpi-install.sh
ENTRYPOINT ["/opt/glpi-start.sh"] ENTRYPOINT ["/opt/glpi-start.sh"]
#Exposition des ports #Exposition des ports
EXPOSE 80 443 EXPOSE 80

@ -1,88 +1,34 @@
# Project to deploy GLPI with docker # Project to deploy GLPI with docker
![Docker Pulls](https://img.shields.io/docker/pulls/diouxx/glpi) ![Docker Stars](https://img.shields.io/docker/stars/diouxx/glpi) [![](https://images.microbadger.com/badges/image/diouxx/glpi.svg)](http://microbadger.com/images/diouxx/glpi "Get your own image badge on microbadger.com") ![Docker Cloud Automated build](https://img.shields.io/docker/cloud/automated/diouxx/glpi) ![Docker Pulls](https://img.shields.io/docker/pulls/aguyonnet/glpi) ![Docker Stars](https://img.shields.io/docker/stars/aguyonnet/glpi)
# Table of Contents
- [Project to deploy GLPI with docker](#project-to-deploy-glpi-with-docker)
- [Table of Contents](#table-of-contents)
- [Introduction](#introduction)
- [Deploy with CLI](#deploy-with-cli)
- [Deploy GLPI](#deploy-glpi)
- [Deploy GLPI with existing database](#deploy-glpi-with-existing-database)
- [Deploy GLPI with database and persistence container data](#deploy-glpi-with-database-and-persistence-container-data)
- [Deploy a specific release of GLPI](#deploy-a-specific-release-of-glpi)
- [Deploy with docker-compose](#deploy-with-docker-compose)
- [Deploy without persistence data ( for quickly test )](#deploy-without-persistence-data--for-quickly-test)
- [Deploy with persistence data](#deploy-with-persistence-data)
- [mysql.env](#mysqlenv)
- [docker-compose .yml](#docker-compose-yml)
- [Environnment variables](#environnment-variables)
- [TIMEZONE](#timezone)
# Introduction # Introduction
Install and run an GLPI instance with docker. Install and run an GLPI instance with docker.
# Deploy with CLI
## Deploy GLPI
```sh
docker run --name mysql -e MYSQL_ROOT_PASSWORD=diouxx -e MYSQL_DATABASE=glpidb -e MYSQL_USER=glpi_user -e MYSQL_PASSWORD=glpi -d mysql:5.7.23
docker run --name glpi --link mysql:mysql -p 80:80 -d diouxx/glpi
```
## Deploy GLPI with existing database
```sh
docker run --name glpi --link yourdatabase:mysql -p 80:80 -d diouxx/glpi
```
## Deploy GLPI with database and persistence data
For an usage on production environnement or daily usage, it's recommanded to use container with volumes to persistent data.
* First, create MySQL container with volume
```sh
docker run --name mysql -e MYSQL_ROOT_PASSWORD=diouxx -e MYSQL_DATABASE=glpidb -e MYSQL_USER=glpi_user -e MYSQL_PASSWORD=glpi --volume /var/lib/mysql:/var/lib/mysql -d mysql:5.7.23
```
* Then, create GLPI container with volume and link MySQL container
```sh
docker run --name glpi --link mysql:mysql --volume /var/www/html/glpi:/var/www/html/glpi -p 80:80 -d diouxx/glpi
```
Enjoy :)
## Deploy a specific release of GLPI ## Deploy a specific release of GLPI
Default, docker run will use the latest release of GLPI. Edit the glpi-install.sh specify a version in the VERSION_GLPI var, then launch a build
For an usage on production environnement, it's recommanded to set specific release.
Here an example for release 9.1.6 :
```sh
docker run --name glpi --hostname glpi --link mysql:mysql --volume /var/www/html/glpi:/var/www/html/glpi -p 80:80 --env "VERSION_GLPI=9.1.6" -d diouxx/glpi
```
# Deploy with docker-compose # Deploy with docker-compose
## Deploy without persistence data ( for quickly test ) ## Deploy without persistence data ( for quickly test )
```yaml ```yaml
version: "3.2" version: "3.5"
services: services:
#Mysql Container #mariadb Container
mysql: mariadb:
image: mysql:5.7.23 image: mariadb:latest
container_name: mysql container_name: mariadb
hostname: mysql hostname: mariadb
environment: environment:
- MYSQL_ROOT_PASSWORD=password - mariadb_ROOT_PASSWORD=password
- MYSQL_DATABASE=glpidb - mariadb_DATABASE=glpidb
- MYSQL_USER=glpi_user - mariadb_USER=glpi_user
- MYSQL_PASSWORD=glpi - mariadb_PASSWORD=glpi
#GLPI Container #GLPI Container
glpi: glpi:
image: diouxx/glpi image: aguyonnet/glpi
container_name : glpi container_name : glpi
hostname: glpi hostname: glpi
ports: ports:
@ -91,18 +37,18 @@ services:
## Deploy with persistence data ## Deploy with persistence data
To deploy with docker compose, you use *docker-compose.yml* and *mysql.env* file. To deploy with docker compose, you use *docker-compose.yml* and *mariadb.env* file.
You can modify **_mysql.env_** to personalize settings like : You can modify **_mariadb.env_** to personalize settings like :
* MySQL root password * mariadb root password
* GLPI database * GLPI database
* GLPI user database * GLPI user database
* GLPI user password * GLPI user password
### mysql.env ### mariadb.env
``` ```
MYSQL_ROOT_PASSWORD=diouxx MYSQL_ROOT_PASSWORD=aguyonnet
MYSQL_DATABASE=glpidb MYSQL_DATABASE=glpidb
MYSQL_USER=glpi_user MYSQL_USER=glpi_user
MYSQL_PASSWORD=glpi MYSQL_PASSWORD=glpi
@ -110,23 +56,23 @@ MYSQL_PASSWORD=glpi
### docker-compose .yml ### docker-compose .yml
```yaml ```yaml
version: "3.2" version: "3.5"
services: services:
#Mysql Container #mariadb Container
mysql: mariadb:
image: mysql:5.7.23 image: mariadb:latest
container_name: mysql container_name: mariadb-glpi
hostname: mysql hostname: mariadb
volumes: volumes:
- /var/lib/mysql:/var/lib/mysql - glpi-db:/var/lib/mysql
env_file: env_file:
- ./mysql.env - ./mariadb.env
restart: always restart: always
#GLPI Container #GLPI Container
glpi: glpi:
image: diouxx/glpi image: aguyonnet/glpi
container_name : glpi container_name : glpi
hostname: glpi hostname: glpi
ports: ports:
@ -134,10 +80,13 @@ services:
volumes: volumes:
- /etc/timezone:/etc/timezone:ro - /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro - /etc/localtime:/etc/localtime:ro
- /var/www/html/glpi/:/var/www/html/glpi - glpi-data:/var/www/html/glpi
environment: environment:
- TIMEZONE=Europe/Brussels - TIMEZONE=Europe/Paris
restart: always restart: always
volumes:
glpi-db:
glpi-data:
``` ```
To deploy, just run the following command on the same directory as files To deploy, just run the following command on the same directory as files
@ -153,7 +102,7 @@ If you need to set timezone for Apache and PHP
From commande line From commande line
```sh ```sh
docker run --name glpi --hostname glpi --link mysql:mysql --volumes-from glpi-data -p 80:80 --env "TIMEZONE=Europe/Brussels" -d diouxx/glpi docker run --name glpi -p 80:80 --env "TIMEZONE=Europe/Paris" -d aguyonnet/glpi
``` ```
From docker-compose From docker-compose
@ -161,5 +110,5 @@ From docker-compose
Modify this settings Modify this settings
```yaml ```yaml
environment: environment:
TIMEZONE=Europe/Brussels TIMEZONE=Europe/Paris
``` ```

@ -1,20 +1,20 @@
version: "3.2" version: "3.5"
services: services:
#Mysql Container #mariadb Container
mysql: mariadb:
image: mysql:5.7.23 image: mariadb:latest
container_name: mysql container_name: mariadb-glpi
hostname: mysql hostname: mariadb
volumes: volumes:
- /var/lib/mysql:/var/lib/mysql - glpi-db:/var/lib/mysql
env_file: env_file:
- ./mysql.env - ./mariadb.env
restart: always restart: always
#GLPI Container #GLPI Container
glpi: glpi:
image: diouxx/glpi image: aguyonnet/glpi
container_name : glpi container_name : glpi
hostname: glpi hostname: glpi
ports: ports:
@ -22,7 +22,11 @@ services:
volumes: volumes:
- /etc/timezone:/etc/timezone:ro - /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro - /etc/localtime:/etc/localtime:ro
- /var/www/html/glpi/:/var/www/html/glpi - glpi-data:/var/www/html/glpi
environment: environment:
- TIMEZONE=Europe/Brussels - TIMEZONE=Europe/Paris
restart: always restart: always
volumes:
glpi-db:
glpi-data:

@ -0,0 +1,34 @@
#!/bin/bash
#Prise de la latest
VERSION_GLPI=$(curl -s https://api.github.com/repos/glpi-project/glpi/releases/latest | grep tag_name | cut -d '"' -f 4)
#Pour utiliser une version specifique:
#VERSION_GLPI=9.5.4
if [[ -z "${TIMEZONE}" ]]; then echo "TIMEZONE is unset";
else echo "date.timezone = \"$TIMEZONE\"" > /etc/php/7.3/apache2/conf.d/timezone.ini;
fi
SRC_GLPI=$(curl -s https://api.github.com/repos/glpi-project/glpi/releases/tags/${VERSION_GLPI} | jq .assets[0].browser_download_url | tr -d \")
TAR_GLPI=$(basename ${SRC_GLPI})
FOLDER_GLPI=glpi/
FOLDER_WEB=/var/www/html/
#check if TLS_REQCERT is present
if !(grep -q "TLS_REQCERT" /etc/ldap/ldap.conf)
then
echo "TLS_REQCERT isn't present"
echo -e "TLS_REQCERT\tnever" >> /etc/ldap/ldap.conf
fi
#Téléchargement et extraction des sources de GLPI
wget -P ${FOLDER_WEB} ${SRC_GLPI}
tar -xzf ${FOLDER_WEB}${TAR_GLPI} -C ${FOLDER_WEB}
rm -Rf ${FOLDER_WEB}${TAR_GLPI}
chown -R www-data:www-data ${FOLDER_WEB}${FOLDER_GLPI}
#Modification du vhost par défaut
echo -e "<VirtualHost *:80>\n\tDocumentRoot /var/www/html/glpi\n\n\t<Directory /var/www/html/glpi>\n\t\tAllowOverride All\n\t\tOrder Allow,Deny\n\t\tAllow from all\n\t</Directory>\n\n\tErrorLog /var/log/apache2/error-glpi.log\n\tLogLevel warn\n\tCustomLog /var/log/apache2/access-glpi.log combined\n</VirtualHost>" > /etc/apache2/sites-available/000-default.conf
#Add scheduled task by cron and enable
echo "*/2 * * * * www-data /usr/bin/php /var/www/html/glpi/front/cron.php &>/dev/null" >> /etc/cron.d/glpi

@ -1,41 +1,5 @@
#!/bin/bash #!/bin/bash
#Controle du choix de version ou prise de la latest
[[ ! "$VERSION_GLPI" ]] \
&& VERSION_GLPI=$(curl -s https://api.github.com/repos/glpi-project/glpi/releases/latest | grep tag_name | cut -d '"' -f 4)
if [[ -z "${TIMEZONE}" ]]; then echo "TIMEZONE is unset";
else echo "date.timezone = \"$TIMEZONE\"" > /etc/php/7.3/apache2/conf.d/timezone.ini;
fi
SRC_GLPI=$(curl -s https://api.github.com/repos/glpi-project/glpi/releases/tags/${VERSION_GLPI} | jq .assets[0].browser_download_url | tr -d \")
TAR_GLPI=$(basename ${SRC_GLPI})
FOLDER_GLPI=glpi/
FOLDER_WEB=/var/www/html/
#check if TLS_REQCERT is present
if !(grep -q "TLS_REQCERT" /etc/ldap/ldap.conf)
then
echo "TLS_REQCERT isn't present"
echo -e "TLS_REQCERT\tnever" >> /etc/ldap/ldap.conf
fi
#Téléchargement et extraction des sources de GLPI
if [ "$(ls ${FOLDER_WEB}${FOLDER_GLPI})" ];
then
echo "GLPI is already installed"
else
wget -P ${FOLDER_WEB} ${SRC_GLPI}
tar -xzf ${FOLDER_WEB}${TAR_GLPI} -C ${FOLDER_WEB}
rm -Rf ${FOLDER_WEB}${TAR_GLPI}
chown -R www-data:www-data ${FOLDER_WEB}${FOLDER_GLPI}
fi
#Modification du vhost par défaut
echo -e "<VirtualHost *:80>\n\tDocumentRoot /var/www/html/glpi\n\n\t<Directory /var/www/html/glpi>\n\t\tAllowOverride All\n\t\tOrder Allow,Deny\n\t\tAllow from all\n\t</Directory>\n\n\tErrorLog /var/log/apache2/error-glpi.log\n\tLogLevel warn\n\tCustomLog /var/log/apache2/access-glpi.log combined\n</VirtualHost>" > /etc/apache2/sites-available/000-default.conf
#Add scheduled task by cron and enable
echo "*/2 * * * * www-data /usr/bin/php /var/www/html/glpi/front/cron.php &>/dev/null" >> /etc/cron.d/glpi
#Start cron service #Start cron service
service cron start service cron start

@ -0,0 +1,4 @@
MYSQL_ROOT_PASSWORD=CHANGEME
MYSQL_DATABASE=glpidb
MYSQL_USER=glpi_user
MYSQL_PASSWORD=CHANGEME

@ -1,4 +0,0 @@
MYSQL_ROOT_PASSWORD=diouxx
MYSQL_DATABASE=glpidb
MYSQL_USER=glpi_user
MYSQL_PASSWORD=glpi
Loading…
Cancel
Save