使用 Docker 将现有的 Prestashop 部署到服务器

Deploy existing Prestashop to server using Docker

我已经在服务器上创建了 PrestaShop 商店。有什么方法可以为我的商店使用 docker 并使用 docker 将其迁移到另一台服务器吗?我知道我需要 docker-compose 但老实说我不知道​​如何处理当前服务器上的文件。

您可以按照本教程在 Docker 环境中设置 Prestashop。

https://hub.docker.com/r/prestashop/prestashop/

您需要将当前文件添加到 Prestashop 容器中,并且很可能将您的数据库导入到 MySQL 容器中。 Docker-compose 将用于一起启动这些容器。完成此操作后,您将能够在任何地方部署整个东西。

好的,所以我深入研究了问题,我的问题的解决方案如下。我所做的是从 prestashop 中提取原始图像并将我的文件复制到那里。

下一步是使用 mariadb 图片。我从以前的商店 phpmyadmin

导出了 backup.sql 文件
version: '2'

services: 
  prestashop:
    image: prestashop
    ports:
      - 80:80
    links:
      - mariadb:mariadb
    depends_on:
      - mariadb
    volumes:
      - ./src:/var/www/html
      - ./src/modules:/var/www/html/modules
      - ./src/themes:/var/www/html/themes
      - ./src/override:/var/www/html/override
    environment:
      - PS_DEV_MODE=1
      - DB_SERVER=mariadb
      - DB_USER=root
      - DB_PASSWD=root
      - DB_NAME=prestashop
      - PS_INSTALL_AUTO=0

  mariadb:
    image: mariadb
    volumes:
     - backup.sql:/docker-entrypoint-initdb.d
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=prestashop

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    links:
      - mariadb
    ports: 
      - 81:80 
    environment:
      - PMA_HOST=mariadb
      - PMA_USER=root
      - PMA_PASSWORD=root

最大的问题是 docker-machine 中的 IP。请记住,如果您使用 docker 工具箱,您的 IP 为 192.168.99.100,但在 Docker 中,对于 Windows,您的 IP 取决于 localhost(或仅键入 localhost)。

你还应该在你的 compose 文件中包含桥接网络,一些示例可能会在此处工作 https://runnable.com/docker/docker-compose-networking

通过这种方式,db 可以配置为只能由本地 docker 网络上的 prestashop 访问,而不会暴露在外部。 Presta db 也可以指向 运行 图像的名称,以防您的 IP 更改或其他情况。您要留下的所有 运行 是应用程序上的端口 80。

你可以使用这个 docker-compose.yml :

version: "3"
services:
  prestashop:
    image: prestashop/prestashop
    networks:
      mycustomnetwork:
    ports:
      - 82:80
    links:
      - mariadb:mariadb
    depends_on:
      - mariadb
    volumes:
      - ./src:/var/www/html
      - ./src/modules:/var/www/html/modules
      - ./src/themes:/var/www/html/themes
      - ./src/override:/var/www/html/override
    environment:
      - PS_DEV_MODE=1
      - DB_SERVER=mariadb
      - DB_USER=root
      - DB_PASSWD=mycustompassword
      - DB_NAME=prestashop
      - PS_INSTALL_AUTO=0

  mariadb:
    image: mariadb
    networks:
      mycustomnetwork:
    volumes:
      - presta_db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=mycustompassword
      - MYSQL_DATABASE=prestashop

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    networks:
      mycustomnetwork:
    links:
      - mariadb:mariadb
    ports:
      - 1235:80
    depends_on:
      - mariadb
    environment:
      - PMA_HOST=mariadb
      - PMA_USER=root
      - PMA_PASSWORD=mycustompassword

volumes:
  presta_db:

networks:
  mycustomnetwork:
    external: true

替换mycustomnetworkmycustompassword

然后运行docker-compose up

网络 url : localhost:82

PHP 我的管理员 url : localhost:1235