fsspencer / dockerize-magento
Docker bash 控制台用于管理 Magento 1 和 2 项目
This package is auto-updated.
Last update: 2024-09-27 18:53:32 UTC
README
这是一个简单的 bash 脚本,允许您创建一个用于 Magento 1 或 2 项目的容器,并具有创建/导入/维护现有项目的能力
特性
- 在几分钟内设置 Magento 1/2 项目
- 创建一个空的 Magento 2.x 项目(开源或 Commerce)
- 通过导入 .sql 文件导入现有的 Magento 1.x 项目
- 通过导入 .sql 文件导入现有的 Magento 2.x 项目
- 如果您已经有一个名为 "mysql" 的 mysql 容器,脚本将自动使用它,否则将创建一个新的容器
- 一个用于 Magento 1 的单个容器
- 一个用于 Magento 2 的单个容器
- 一个用于 Mysql 的单个容器
要求
- 已安装 Docker
- 通过命令
docker
使用命令行访问 Docker
安装
全局
在终端中执行以下命令以执行安装程序。您需要在终端中安装 "git" 和 "curl"。
bash <(curl -s -X GET "https://raw.githubusercontent.com/fsspencer/bash-docker-magento/master/dockerize?v='$(date +"%s")'") setup
这将把 dockerize 安装在 ~/.dockerize/bin,并在 /usr/local/bin 目录中创建一个符号链接,并下载每个所需的 docker 容器。
这将拉取必要的 Docker 镜像。
Composer(每个项目)
composer require fsspencer/dockerize-magento
这将在您的项目根目录中创建一个 dockerize 文件。您只需运行它即可
./dockerize install
或
bash dockerize install
这将拉取必要的 Docker 镜像。
用法
dockerize <action> <arguments...>
操作
注意:所有这些命令都只适用于您的项目根目录。这意味着如果您想在项目中的特定目录(例如:skin/frontend/myvendor/mytheme/)使用 gulp,则不会工作。在这种情况下,您需要使用 "dockerize bash" 命令并导航到该目录,然后从该位置使用 gulp 命令。
Magento 1 用法
新项目
- 从 https://magento.com/tech-resources/download 下载 Magento 清洁实例
- 解压缩 Magento 代码并进入项目根目录
- 从您的根目录执行以下操作
dockerize init
- 遵循脚本的步骤
- 选择
创建新数据库
而不导入任何内容 - 在浏览器中导航到您选择的 URL(默认为 http://dev.local/)
现有项目
- 在任何您想要的目录中下载您的项目代码
- 将单个包含数据库转储的 sql 文件复制到您的项目根目录
- 从您的根目录执行以下操作
dockerize init
- 遵循脚本的步骤
- 当脚本询问时选择
创建新数据库
和导入数据库
。这将创建您的 local.xml 文件,设置您的商店 URL 以及其他设置
Magento 2 用法
新项目
- 为您的项目创建一个新目录
- 从您的根目录执行以下操作
dockerize init
- 遵循脚本的步骤
- 当询问是否
创建数据库
时输入Y
- 当询问是否
导入数据库
时输入n
- 当询问是否
安装 Magento
时输入Y
并选择您想要安装的版本。这将为您完成其余的操作 - 在浏览器中导航到您选择的 URL(默认为 http://dev.local/)
现有项目
- 在任何您想要的目录中下载您的项目代码
- 将单个包含数据库转储的 sql 文件复制到您的项目根目录
- 获取原始 app/etc/config.php 的副本
- 从您的根目录执行以下操作
dockerize init
- 遵循脚本的步骤
- 当脚本询问时选择
创建新数据库
和导入数据库
。这将创建您的 env.php 文件,设置您的商店 URL 以及其他设置
在不同项目之间切换
dockerize start
命令将在 ~/.dockerize 目录内创建一个新的配置文件。
在您第一次初始化项目后,该文件将保存一些配置参数,以防止执行整个流程两次。
每次您执行 dockerize start
时,它将停止任何 Magento Docker 容器,并使用当前项目初始化一个新的容器。
如果您想重置项目 dockerize 配置,您需要在 Magento 根目录下执行 dockerize remove
。
访问 Web 服务器
如果您正在使用 Magento 1 项目
$ docker exec --user www-data -ti magento bash
如果您正在使用 Magento 2 项目
$ docker exec --user www-data -ti magento2 bash
这将定位到 /var/www/html
目录,这是您的根目录,具有 www-data:www-data 的权限。
访问 MySQL
您可以执行以下命令
$ dockerize mysql -e "your sql query;"
或者直接进入 mysql 服务器
$ dockerize mysql
如果您在本地计算机上安装了 mysql-client,您可以使用 Docker 默认 IP 地址 0.0.0.0
连接到它
$ mysql -h 0.0.0.0 -uroot -proot
Grunt / Gulp
dockerize 命令具有与 npm、Grunt 和 Gulp 一起工作的能力,可以直接在项目根目录中使用。对于 Magento 2 的使用来说,这是理想的,因为 Gruntfile.js
和 package.json
都位于根目录。
但是,如果您想在不同的目录中使用这些命令,您需要先使用 bash
命令连接到您的容器。
场景
- 您有一个使用 Gulp 的自定义主题,该主题用于 Magento 1。
- 您的主题和 gulpfile.js 位于 skin/frontend/myvendor/mycustomtheme
按照以下步骤操作
$ dockerize bash
# once you are on the magento container
$ cd skin/frontend/myvendor/mycustomtheme
$ npm install # in order to download the dependencies
$ gulp # run gulp with any defined task on your gulpfile.js
已知问题
-
ERROR 3167 (HY000) 在第 XX 行:'INFORMATION_SCHEMA.SESSION VARIABLES' 功能已禁用;请参阅 'show_compatibility_56' 的文档
解决方案:进入您的 mysql 服务器
$ dockerize mysql
,并执行以下查询set @@global.show_compatibility_56=ON;
。然后再次尝试执行您的操作,错误应该会消失。
致谢
- Francis S. Spencer - francis.s.spencer@gmail.com
- codealist.net