Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

replace php7 (alpine) by wonderfall/nginx-php #11

Closed
Magicalex opened this issue May 12, 2017 · 12 comments
Closed

replace php7 (alpine) by wonderfall/nginx-php #11

Magicalex opened this issue May 12, 2017 · 12 comments

Comments

@Magicalex
Copy link
Member

@hardware @Wonderfall
https://github.com/Wonderfall/dockerfiles/blob/master/nginx-php/Dockerfile

@hardware
Copy link
Member

Je sais pas si c'est vraiment utile depuis qu'on bloque une version stable. En plus ça ajoute une surcouche à maintenir et à build manuellement puisque certaines extensions php requises par flarum ne sont pas dans wonderfall/nginx-php.

@Wonderfall
Copy link

Wonderfall commented May 13, 2017

Actuellement l'image utilise testing : https://github.com/mondediefr/docker-flarum/blob/master/Dockerfile#L10
Et c'est vraiment ce qui m'a motivé à faire cette image. Ce n'est pas du tout stable, il y a des régressions. Nginx n'est plus du tout maintenu non plus, la version stable n'est même pas mise à jour dans les dépôts d'alpine, même si on pioche dans edge (EDIT : pas de bol pour moi, ils viennent tout juste de mettre à jour le 10 mai dernier). Niveau sécu je trouve pas ça top du coup... Après j'admets que la décision est plus simple à faire pour moi.

Quelles sont ces extensions ? Voici la liste des modules présents dans nginx-php :

[PHP Modules]
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gd
gmp
hash
iconv
intl
json
ldap
libxml
mbstring
mcrypt
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_pgsql
pdo_sqlite
pgsql
Phar
posix
readline
Reflection
session
SimpleXML
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zip
zlib

Et opcache (Zend OPcache) qui est présent mais pas configuré de base.
J'ai fait une comparaison avec les modules présents et activés dans docker-flarum, absolument 100% des modules sont présents dans nginx-php.

@hardware
Copy link
Member

hardware commented May 13, 2017

Ok pourquoi pas alors. ça change quoi au niveau de l'organisation de l'image docker ? J'ai juste à mettre FROM wonderfall/nginx-php et à supp les paquets php7* et nginx ?

@Wonderfall
Copy link

Wonderfall commented May 13, 2017

Entre autres il faut faire ça déjà (tu peux aussi enlever s6 et su-exec qui sont inclus dans l'image), ensuite il faut placer quelques fichiers de configuration aux bons endroits, pour ça je recommande de réunir les directives COPY en une seule qui fasse COPY rootfs /, et donc de tout mettre dans un dossier rootfs qui respecte l'arborescence depuis la racine.

  • /nginx/sites-enabled/nginx.conf : mettre le block server seulement et pas besoin d'y mettre client_max_body puisque c'est déjà dans le block http. Pour fastcgi :
fastcgi_pass unix:/php/run/php-fpm.sock
include /nginx/conf/fastcgi_params
  • Pas besoin de mettre le php-fpm.conf custom.
  • Remplacer php7 par php tout court dans les scripts.
  • Plus besoin de mettre s6.d puisque c'est déjà inclus.
  • Mettre la conf opcache dans /php/conf.d/opcache.ini.

Par contre il faut placer ça dans run.sh :

sed -i -e "s/<UPLOAD_MAX_SIZE>/$UPLOAD_MAX_SIZE/g" /nginx/conf/nginx.conf /php/etc/php-fpm.conf \
       -e "s/<MEMORY_LIMIT>/$MEMORY_LIMIT/g" /php/etc/php-fpm.conf

Donc ajouter les variables d'environnement :

  • ENV UPLOAD_MAX_SIZE=50M
  • ENV MEMORY_LIMIT= à vous de voir, dépend de la machine...

Aussi, on modifie les permissions de run.sh :

chown -R $UID:$GID /flarum /nginx /php /var/log /tmp /etc/s6.d

@Wonderfall
Copy link

Voilà j'ai mis à jour les instructions pour la migration, si je vois un autre truc je mettrai à jour.

@hardware
Copy link
Member

Merci pour les instructions, ça marche bien en local. Je vais maintenant tester en prod.

@hardware
Copy link
Member

hardware commented May 13, 2017

Bon bah ça a marché en prod du premier coup, ça c'est de l'image de qualité 👍
Merci encore @Wonderfall.

@Magicalex on attend encore un peu pour être sûr qu'il y ait pas d'effet de bord puis on bascule le tag 0.1.0-beta.6-stable sur 8e427b8

@Wonderfall
Copy link

Cool si ça marche bien alors. 😇

@Wonderfall
Copy link

Wonderfall commented May 13, 2017

Par contre comme dit dans mon précédent post, plus besoin de /etc/s6.d parce que la même chose est déjà présente d'origine dans l'image : https://github.com/mondediefr/docker-flarum/tree/master/rootfs/etc/s6.d

Le but aussi c'était d'éviter au maximum la redondance.

@hardware
Copy link
Member

hardware commented May 13, 2017

Effectivement, j'ai oublié ça. J'aime bien cette organisation, c'est plus propre. Tu pourras faire des tags pour les versions de php à l'occasion ? Si un jour il y a un pb de compatibilité, ça pourrait servir.

@Wonderfall
Copy link

Oui j'en ferai pour les versions majeures et intermédiaires. Niveau maintenance l'image est rebuild une fois par semaine automatiquement et si jamais je suis absent et qu'il faut mettre à jour, @xataz et toi avez (depuis un moment) accès à mon repo en écriture.

@Wonderfall
Copy link

Wonderfall commented May 13, 2017

J'ai mis un tag 7.1 pour PHP 7.1. D'ailleurs il y a eu une mise à jour il y a 2 jours en 7.1.5, je viens de changer le numéro de version, faudrait rebuild flarum après.
En train d'être build : https://hub.docker.com/r/wonderfall/nginx-php/builds/byzewxitlnko76vne6sou7n/

@hardware hardware closed this as completed Jun 4, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants