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