Ceci n’est pas un article à proprement parler, mais un mémo que je laisse visible car cela peut intéresser d’autres personnes.
Afin de me débarrasser d’un stack WAMP vieillissant et peu évolutif pour mes développements par Docker, je publie ci-dessous mon projet Magento 1.9, pour ceux, comme moi qui maintienne encore cet ancien CMS e-commerce.
Répertoire du projet
Il s’agit d’un stack LAMP classique : Apache, PHP 5.6, MySQL 5.7, PHPMyAdmin et memcached. Il y a 4 conteneurs. Niveau arborescence, mon projet Docker Magento 1.9 ressemble à ceci :
projet_mage19/
confs/
db_data/
magento_data/
mysql/
conf.d/
docker-compose.yml
Dockerfile
- confs : php.ini
- db_data : les données MySQL
- magento_data : le site Magento
- mysql/conf.d : my.cnf
docker-compose.yml
La partie « command » du conteneur « db » permet d’avoir le my.cnf en lecture seule, sinon il est ignoré par MySQL.
version: "3.9"
services:
db:
image: mysql:5.7
volumes:
- ./db_data:/var/lib/mysql
- ./mysql/conf.d/:/usr/local/mysqlconf
restart: always
environment:
MYSQL_ROOT_PASSWORD: password_root_mysql
MYSQL_DATABASE: nom_database
MYSQL_USER: nom_utilisateur
MYSQL_PASSWORD: password_utilisateur
command: >
bash -c "
cp /usr/local/mysqlconf/*.cnf /etc/mysql/conf.d/ && chmod 644 /etc/mysql/conf.d/*.cnf && /entrypoint.sh mysqld
"
mage19:
depends_on:
- db
build: .
volumes:
- ./magento_data:/var/www/html
ports:
- "80:80"
restart: always
stdin_open: true
tty: true
extra_hosts:
- monsitemagento.local:127.0.0.1
hostname: monsitemagento.local
domainname: local
phpmyadmin:
image: phpmyadmin
restart: always
ports:
- 8080:80
environment:
- PMA_ARBITRARY=1
memcached:
image: bitnami/memcached:latest
ports:
- 11211:11211
environment:
- MEMCACHED_CACHE_SIZE=512
volumes:
db_data: {}
magento_data: {}
confs: {}
Dockerfile
FROM php:5.6-apache
EXPOSE 80
RUN apt-get update -qq && \
apt-get install -qy \
libmemcached-dev \
zlib1g-dev \
git \
gnupg \
unzip \
zip \
&& pecl install memcached-2.2.0 \
&& docker-php-ext-enable memcached
ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/
RUN chmod +x /usr/local/bin/install-php-extensions && \
install-php-extensions \
dom \
hash \
iconv \
pcre \
simplexml \
mbstring \
zip \
gd \
pdo \
pdo_mysql \
memcached
COPY confs/php.ini /usr/local/etc/php/conf.d/app.ini
RUN a2enmod rewrite
RUN service apache2 restart
my.cnf
[mysqld]
query_cache_type = 1
query_cache_size = 512M
query_cache_limit = 256M
tmp_table_size = 256M
max_heap_table_size = 256M
read_buffer_size = 128M
read_rnd_buffer_size = 128M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 256M
myisam_repair_threads = 2
key_buffer_size = 256M
max_allowed_packet = 256M
table_open_cache = 1024
sort_buffer_size = 8M
thread_cache_size = 8
innodb_log_buffer_size = 32M
innodb_log_file_size = 32M
innodb_log_files_in_group = 2
innodb_flush_log_at_trx_commit = 0
innodb_buffer_pool_size = 1024M
php.ini
date.timezone = Europe/Paris
memory_limit = 1024M
max_execution_time=600
magic_quotes_gpc = off
opcache.enable = 1
opcache.enable_cli = 1
opcache.memory_consumption = 256M
opcache.revalidate_freq = 0
apc.enable_cli = On
upload_max_filesize = 16M
post_max_size = 16M
realpath_cache_size = 4096k
realpath_cache_ttl = 7200
display_errors = Off
display_startup_errors = Off
Démarrer les conteneurs avec docker-compose
Pour accéder au site via http://monsitemagento.local ne pas oublier d’ajouter une ligne dans le fichier hosts :
127.0.0.1 monsitemagento.local
Puis, dans un terminal, dans le répertoire projet_mage19 :
docker-compose up -d
Le résultat est (beaucoup) trop lent ? Allez lire l’article qui suit : Volumes Docker Windows très lent