如何通过docker-compose绑定挂载Docker中Magento 2文件用于本地开发?
Magento 2本地Docker开发:绑定挂载同步容器文件到本地目录
我已能通过以下步骤启动Bitnami版Magento 2本地实例:
- 执行命令拉取docker-compose文件:
curl -k https://raw.githubusercontent.com/bitnami/containers/main/bitnami/magento/docker-compose.yml > docker-compose.yml - 启动服务:
docker-compose up -d - 访问
localhost:80即可打开Magento 2站点
当前使用的docker-compose.yml内容如下:
version: '2' services: mariadb: image: docker.io/bitnami/mariadb:10.4 environment: # ALLOW_EMPTY_PASSWORD is recommended only for development. - ALLOW_EMPTY_PASSWORD=yes - MARIADB_USER=bn_magento - MARIADB_DATABASE=bitnami_magento volumes: - 'mariadb_data:/bitnami/mariadb' magento: image: docker.io/bitnami/magento:2 ports: - '80:8080' - '443:8443' environment: - MAGENTO_HOST=localhost - MAGENTO_DATABASE_HOST=mariadb - MAGENTO_DATABASE_PORT_NUMBER=3306 - MAGENTO_DATABASE_USER=bn_magento - MAGENTO_DATABASE_NAME=bitnami_magento - ELASTICSEARCH_HOST=elasticsearch - ELASTICSEARCH_PORT_NUMBER=9200 # ALLOW_EMPTY_PASSWORD is recommended only for development. - ALLOW_EMPTY_PASSWORD=yes volumes: - 'magento_data:/bitnami/magento' depends_on: - mariadb - elasticsearch elasticsearch: image: docker.io/bitnami/elasticsearch:7 volumes: - 'elasticsearch_data:/bitnami/elasticsearch/data' volumes: mariadb_data: driver: local magento_data: driver: local elasticsearch_data: driver: local
问题:容器内的Magento文件未同步到本地工作目录,无法进行本地文件开发,尝试配置绑定挂载未成功。
解决方案
要实现本地目录与容器内Magento文件的双向同步,需修改绑定挂载配置,并先同步容器内的初始文件到本地:
- 停止当前运行的容器:
docker-compose down
- 在本地工作目录(存放docker-compose.yml的目录)创建Magento文件目录:
mkdir ./magento
- 从Bitnami镜像中复制Magento初始文件到本地目录:
docker run --rm -v $(pwd)/magento:/target docker.io/bitnami/magento:2 cp -a /bitnami/magento/. /target/
- 修改docker-compose.yml中
magento服务的volumes配置,将原有的命名卷替换为绑定挂载:
原配置:
volumes: - 'magento_data:/bitnami/magento'
替换为:
volumes: - ./magento:/bitnami/magento
- 重新启动容器:
docker-compose up -d
修改后的完整docker-compose.yml
version: '2' services: mariadb: image: docker.io/bitnami/mariadb:10.4 environment: # ALLOW_EMPTY_PASSWORD is recommended only for development. - ALLOW_EMPTY_PASSWORD=yes - MARIADB_USER=bn_magento - MARIADB_DATABASE=bitnami_magento volumes: - 'mariadb_data:/bitnami/mariadb' magento: image: docker.io/bitnami/magento:2 ports: - '80:8080' - '443:8443' environment: - MAGENTO_HOST=localhost - MAGENTO_DATABASE_HOST=mariadb - MAGENTO_DATABASE_PORT_NUMBER=3306 - MAGENTO_DATABASE_USER=bn_magento - MAGENTO_DATABASE_NAME=bitnami_magento - ELASTICSEARCH_HOST=elasticsearch - ELASTICSEARCH_PORT_NUMBER=9200 # ALLOW_EMPTY_PASSWORD is recommended only for development. - ALLOW_EMPTY_PASSWORD=yes volumes: - ./magento:/bitnami/magento depends_on: - mariadb - elasticsearch elasticsearch: image: docker.io/bitnami/elasticsearch:7 volumes: - 'elasticsearch_data:/bitnami/elasticsearch/data' volumes: mariadb_data: driver: local elasticsearch_data: driver: local
完成以上操作后,本地./magento目录将与容器内/bitnami/magento目录双向同步,你可以直接在本地修改文件,容器会实时获取更新。
内容的提问来源于stack exchange,提问作者inked_rabbit
相关产品推荐
相关产品推荐

