系统学习magento二次开发,推荐小册:《Magento中文全栈二次开发 》
本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。
很久以前,当我第一次开始使用PHP时,我确实在设置工作环境时遇到了麻烦。
我不知道自己在做什么。
不要问我怎么做,但我最终让Apache Tomcat运行PHP。
老实说,我不知道我今天能不能设置这样的亵渎。
编辑注意:由于udovicic/echo:
apache-php7.1更新,你不再需要apache配置,所以我编辑了这篇文章并删除了apache配置。
多年来,我走了从xampp,手动LAMP设置,流浪汉的整个道路......
所有这些都至少有1个交易破坏者,特别是当我开始与Magento合作时。
最后,Docker的到来使开发变得更加容易。
在这一点上,解释Docker是什么变得有点棘手。
它执行操作系统级虚拟化(容器化),这是指内核允许存在多个隔离的用户空间实例的操作系统功能。
如果上面的句子对您没有任何意义,那么也许访问 http://www.docker.com 并在某个时候回到这里是明智的,否则,请继续阅读......
我现在要分享的不是一些Docker的智慧。它更多的是关于能够通过Docker运行Magento 2的设置,所以本文假设你对Docker有些熟悉。
所以,让我们开始...
让我们运行Magento 2,假设 http://m2.docker
你应该做的第一件事是在 /etc/hosts 文件中的某个位置添加此行:
127.0.0.1 m2.docker www.m2.docker
我们将需要一些文件系统结构,因此请执行以下操作:
tomas ~ $ mkdir m2.docker tomas ~ $ cd m2.docker/ tomas ~/m2.docker $ mkdir docker tomas ~/m2.docker $ mkdir html tomas ~/m2.docker $ mkdir -p docker/db tomas ~/m2.docker $ touch docker/xdebug.ini tomas ~/m2.docker $ touch docker/apache.conf tomas ~/m2.docker $ touch docker-compose.yml tomas ~/m2.docker $ touch .env
现在,让我们逐个来看这些文件文件:
.env
在这个文件中,你可以编写将在docker-compose.yml
中使用的变量,我的看起来像这样:
CONTAINER_PREFIX=m2docker SERVER_NAME=m2.docker SERVER_ALIAS=www.m2.docker DIRECTORY_NAME=m2.docker WEB_USER=inchoo WEB_ROOT = /var/www/html MYSQL_DB_HOST = ${CONTAINER_PREFIX}_db_1 MYSQL_DATABASE=inchoo MYSQL_ROOT_USERNAME=root MYSQL_ROOT_PASSWORD=inchoo MYSQL_USER=inchoo MYSQL_PASSWORD=inchoo DOCKER_EXEC=docker exec DOCKER_EXEC_INTERACTIVE=docker exec -i DOCKER_EXEC_TTY=${DOCKER_EXEC_INTERACTIVE} -t
对于docker-compose.yml,您将需要以下代码。
我还添加了一些带有文档链接的评论。
请注意,我使用的是我的同事Stjepan创建的apache-php图像,我强烈推荐它进行开发。
# https://docs.docker.com/compose/compose-file version: "3.6" # https://docs.docker.com/compose/compose-file/#service-configuration-reference services: #custom name apache-php: # https://docs.docker.com/compose/compose-file/#image # https://githheizenberg ub.com/udovicic/echo => https://hub.docker.com/r/udovicic/echo/ image: udovicic/echo:apache-php7.1 # https://docs.docker.com/compose/compose-file/#ports ports: - "80:80" # https://docs.docker.com/compose/compose-file/#expose expose: - "9000" # https://docs.docker.com/compose/compose-file/#volumes volumes: - ./docker/xdebug.ini:/etc/php/7.1/mods-available/xdebug.ini - ./html:/var/www/html # https://docs.docker.com/compose/compose-file/#environment environment: - TERM=xterm-256color - APACHE_RUN_USER=1000 # https://docs.docker.com/compose/compose-file/#network-configuration-reference networks: default: aliases: - ${SERVER_NAME} - ${SERVER_ALIAS} db: # https://hub.docker.com/_/mysql/ image: mysql:5.7 volumes: - ./docker/db/data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_DATABASE: ${MYSQL_DATABASE} MYSQL_USER: ${MYSQL_USER} MYSQL_PASSWORD: ${MYSQL_PASSWORD} redis: # https://hub.docker.com/_/redis/ image: redis:latest phpmyadmin: # https://hub.docker.com/r/phpmyadmin/phpmyadmin/ image: phpmyadmin/phpmyadmin ports: - "8080:80" environment: MYSQL_USERNAME: ${MYSQL_ROOT_USERNAME} MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} …and xdebug.ini zend_extension=xdebug.so xdebug.remote_autostart=0 xdebug.remote_enable=1 xdebug.remote_port=9000 xdebug.remote_connect_back=1
这一点我们有工作环境,所以让我们尝试运行它:
tomas ~/m2.docker $ docker-compose up -d Creating network "m2docker_default" with the default driver Creating m2docker_apache-php_1 ... done Creating m2docker_redis_1 ... done Creating m2docker_phpmyadmin_1 ... done Creating m2docker_db_1 ... done tomas ~/m2.docker $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e3384b0eff8c mysql:5.7 "docker-entrypoint.s…" 3 seconds ago Up 2 seconds 3306/tcp m2docker_db_1 d283bf018330 phpmyadmin/phpmyadmin "/run.sh phpmyadmin" 3 seconds ago Up 2 seconds 9000/tcp, 0.0.0.0:8080->80/tcp m2docker_phpmyadmin_1 ded8bce1d993 redis:latest "docker-entrypoint.s…" 3 seconds ago Up 2 seconds 6379/tcp m2docker_redis_1 fe8a80763ac6 udovicic/echo:apache-php7.1 "/start.sh" 3 seconds ago Up 2 seconds 0.0.0.0:80->80/tcp, 9000/tcp m2docker_apache-php_1 tomas ~/m2.docker $
Magento应该安装在“html”目录中。
请注意,在引用数据库地址时需要使用“db”,依此类推。只需检查docker-compose.yml(服务名称)。
此外,相关凭据位于 .env 文件中。
PhpMyAdmin 可用 @ http://m2.docker:8080
这是一个非常基本的设置。我通常创建 git 存储库,它最初以 2 个分支结束,例如 m2-docker 和 master,然后我将 .git 目录复制到 html 中并签出 master 分支,而在基本目录中我签出 m2-docker 分支。