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

时间:2018-11-08 21:15:45

标签: docker docker-compose dockerfile prestashop-1.7

我已经在服务器上创建了PrestaShop商店。有没有可能将docker用于我的商店并将其迁移到使用docker的另一台服务器中?我知道我需要docker-compose,但老实说,我不知道如何处理当前服务器上的文件。

4 个答案:

答案 0 :(得分:3)

您可以使用此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

网址:localhost:82

PHP MyAdmin网址:localhost:1235

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

好,所以我深入探讨了问题和解决方案,如下所示。我要做的是从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,但在Windows的Docker中,您的IP取决于localhost(或仅键入localhost)。

答案 3 :(得分:0)

您还应该在撰写文件中包含网桥网络,某些示例可能在此处https://runnable.com/docker/docker-compose-networking起作用。

通过这种方式,可以将db配置为仅由本地docker网络上的prestashop访问,而不会暴露在外部。如果您的IP发生更改,Presta db也可以指向运行映像的名称。您只需运行该应用程序上的端口80。