使用 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
替换mycustomnetwork
和mycustompassword
然后运行docker-compose up
网络 url : localhost:82
PHP 我的管理员 url : localhost:1235
我已经在服务器上创建了 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
替换mycustomnetwork
和mycustompassword
然后运行docker-compose up
网络 url : localhost:82
PHP 我的管理员 url : localhost:1235