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
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
ENV DEBIAN_FRONTEND noninteractive
@ -9,7 +9,9 @@ ENV DEBIAN_FRONTEND noninteractive
#Installation d'apache et de php7.3 avec extension
RUN apt update \
&& apt install --yes --no-install-recommends \
apt-utils \
apache2 \
apache2-utils \
php7.3 \
php7.3-mysql \
php7.3-ldap \
@ -32,9 +34,10 @@ jq \
&& rm -rf /var/lib/apt/lists/*
#Copie et execution du script pour l'installation et l'initialisation de GLPI
COPY glpi-start.sh /opt/
RUN chmod +x /opt/glpi-start.sh
COPY glpi-start.sh glpi-install.sh /opt/
RUN chmod +x /opt/glpi-start.sh /opt/glpi-install.sh
RUN bash /opt/glpi-install.sh
ENTRYPOINT ["/opt/glpi-start.sh"]
#Exposition des ports
EXPOSE 80 443
EXPOSE 80

@ -1,88 +1,34 @@
# 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)
# 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)
![Docker Pulls](https://img.shields.io/docker/pulls/aguyonnet/glpi) ![Docker Stars](https://img.shields.io/docker/stars/aguyonnet/glpi)
# Introduction
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
Default, docker run will use the latest release of GLPI.
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
```
Edit the glpi-install.sh specify a version in the VERSION_GLPI var, then launch a build
# Deploy with docker-compose
## Deploy without persistence data ( for quickly test )
```yaml
version: "3.2"
version: "3.5"
services:
#Mysql Container
mysql:
image: mysql:5.7.23
container_name: mysql
hostname: mysql
#mariadb Container
mariadb:
image: mariadb:latest
container_name: mariadb
hostname: mariadb
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_DATABASE=glpidb
- MYSQL_USER=glpi_user
- MYSQL_PASSWORD=glpi
- mariadb_ROOT_PASSWORD=password
- mariadb_DATABASE=glpidb
- mariadb_USER=glpi_user
- mariadb_PASSWORD=glpi
#GLPI Container
glpi:
image: diouxx/glpi
image: aguyonnet/glpi
container_name : glpi
hostname: glpi
ports:
@ -91,18 +37,18 @@ services:
## Deploy with persistence data
To deploy with docker compose, you use *docker-compose.yml* and *mysql.env* file.
You can modify **_mysql.env_** to personalize settings like :
To deploy with docker compose, you use *docker-compose.yml* and *mariadb.env* file.
You can modify **_mariadb.env_** to personalize settings like :
* MySQL root password
* mariadb root password
* GLPI database
* GLPI user database
* GLPI user password
### mysql.env
### mariadb.env
```
MYSQL_ROOT_PASSWORD=diouxx
MYSQL_ROOT_PASSWORD=aguyonnet
MYSQL_DATABASE=glpidb
MYSQL_USER=glpi_user
MYSQL_PASSWORD=glpi
@ -110,23 +56,23 @@ MYSQL_PASSWORD=glpi
### docker-compose .yml
```yaml
version: "3.2"
version: "3.5"
services:
#Mysql Container
mysql:
image: mysql:5.7.23
container_name: mysql
hostname: mysql
#mariadb Container
mariadb:
image: mariadb:latest
container_name: mariadb-glpi
hostname: mariadb
volumes:
- /var/lib/mysql:/var/lib/mysql
- glpi-db:/var/lib/mysql
env_file:
- ./mysql.env
- ./mariadb.env
restart: always
#GLPI Container
glpi:
image: diouxx/glpi
image: aguyonnet/glpi
container_name : glpi
hostname: glpi
ports:
@ -134,10 +80,13 @@ services:
volumes:
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
- /var/www/html/glpi/:/var/www/html/glpi
- glpi-data:/var/www/html/glpi
environment:
- TIMEZONE=Europe/Brussels
- TIMEZONE=Europe/Paris
restart: always
volumes:
glpi-db:
glpi-data:
```
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
```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
@ -161,5 +110,5 @@ From docker-compose
Modify this settings
```yaml
environment:
TIMEZONE=Europe/Brussels
TIMEZONE=Europe/Paris
```

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