以下是我的场景:
我一直在开发一个将经常修改的插件,我需要使用docker创建一个镜像,在其中安装一个新版本的wordpress,然后从开发环境导入所有的数据库和插件(插件在github上)
我设法用https://github.com/eugeneware/docker-wordpress-nginx在docker上安装了wordpress。
下面是我的问题:
1-在docker中安装后,有没有办法修改wordpress文件和文件夹(用于安装插件和使用命令行,而不是wordpress GUI)
2-如果我想实现我上面解释的,最好的工作流程是什么?
发布于 2014-10-01 13:16:58
你的问题有两种可能的答案。我现在也在努力解决这个问题,所以YMMV。
首先,如果你在你的主机上运行Docker容器,你总是可以暂停它,从运行的容器docker commit
创建一个新的镜像,然后将它推送到一个私有的存储库docker push
(实时的Wordpress安装可能不适合公共的Docker Hub)。完成后,您可以恢复容器docker unpause
,然后可以在您的开发系统上更新映像。然后在升级完成并经过测试且一切正常后再回来,然后docker pull
镜像并重新启动您的服务,以便使用新镜像。
这不是一个很好的解决方案,但它会起作用的。
根据Tadeusz的评论,我不一定要从数据卷运行整个WP安装。它们是易失性的,如果由于任何原因,您的容器被删除,并且它是唯一引用数据卷的容器,那么您将失去一切(除非您保留多个备份--您确实保留了多个备份,对吧?)
我正在考虑的另一个解决方案是将插件更改部署为Dockerfile的一部分。一种更深思熟虑的方法,但可以通过网络挂钩,这样当你提交Github存储库时,它会自动构建一个新的Docker镜像。有关于进行自动构建过程here的讨论。服务器管理员端的东西在您的端托管将需要拉出一个新的图像,正如我上面提到的。完成了。
当然,这项设置留给您的开发系统作为练习。
干杯!
发布于 2018-04-19 21:20:22
迟到了,但我已经有了一个好的解决方案。它没有被其他答案覆盖,对未来的读者也应该是有用的。
我在ec2 t2-micro上运行它,到目前为止,它工作得很好。mySQL和Nginx都安装在自己的容器中(通过Docker compose),Docker卷用于维护mySQL和Wordpress的状态。关于Nginx设置的代码和附加信息取自here。
docker-compose.yml:
version: '3.6'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: db_root_pass
MYSQL_DATABASE: db
MYSQL_USER: db_user
MYSQL_PASSWORD: db_pass
nginx:
depends_on:
- wordpress
image: nginx:latest
restart: always
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
wordpress:
depends_on:
- db
volumes:
- wp_data:/var/www/html/wp-content
image: wordpress:latest
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: db_user
WORDPRESS_DB_PASSWORD: db_pass
volumes:
db_data:
wp_data:
db_data
卷被映射到Wordpress容器中的mySQL数据目录,而wp_data
卷被映射到Wordpress容器中的Wordpress内容目录。你可以做的就是配置命令行界面来写入主机上的wp_data
目录,这些更改将会在Wordpress站点上显示出来,而不需要重新构建任何容器!
https://stackoverflow.com/questions/23180800
复制相似问题