fsspencer/dockerize-magento

Docker bash 控制台用于管理 Magento 1 和 2 项目

安装: 6

依赖: 0

建议: 0

安全: 0

星标: 3

关注者: 1

分支: 2

公开问题: 1

语言:Shell

类型:magento2-component

dev-master 2018-03-12 22:48 UTC

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 用法

新项目

  1. https://magento.com/tech-resources/download 下载 Magento 清洁实例
  2. 解压缩 Magento 代码并进入项目根目录
  3. 从您的根目录执行以下操作 dockerize init
  4. 遵循脚本的步骤
  5. 选择 创建新数据库 而不导入任何内容
  6. 在浏览器中导航到您选择的 URL(默认为 http://dev.local/

现有项目

  1. 在任何您想要的目录中下载您的项目代码
  2. 将单个包含数据库转储的 sql 文件复制到您的项目根目录
  3. 从您的根目录执行以下操作 dockerize init
  4. 遵循脚本的步骤
  5. 当脚本询问时选择 创建新数据库导入数据库。这将创建您的 local.xml 文件,设置您的商店 URL 以及其他设置

Magento 2 用法

新项目

  1. 为您的项目创建一个新目录
  2. 从您的根目录执行以下操作 dockerize init
  3. 遵循脚本的步骤
  4. 当询问是否 创建数据库 时输入 Y
  5. 当询问是否 导入数据库 时输入 n
  6. 当询问是否 安装 Magento 时输入 Y 并选择您想要安装的版本。这将为您完成其余的操作
  7. 在浏览器中导航到您选择的 URL(默认为 http://dev.local/

现有项目

  1. 在任何您想要的目录中下载您的项目代码
  2. 将单个包含数据库转储的 sql 文件复制到您的项目根目录
  3. 获取原始 app/etc/config.php 的副本
  4. 从您的根目录执行以下操作 dockerize init
  5. 遵循脚本的步骤
  6. 当脚本询问时选择 创建新数据库导入数据库。这将创建您的 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.jspackage.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;。然后再次尝试执行您的操作,错误应该会消失。

致谢