@
CaptainWho #8 一般 ubuntu 下载软件包这种还真是写到 dockerfile 里面,理论每次重新创建镜像都会重新下载一次。不过实际并不是每次都下载,dockerfile 每一个 RUN 都是独立的一层,都会建立缓存,除非上一层变更或手工删除了镜像,不然会直接使用上次的缓存,不需要重新下载一次。
wordpress 一般是把 www 目录映射到物理主机的一个目录,重新构建容器时就不需要再次下载 wordpress 插件了,直接使用 www 目录即可。对了,wordpress docker 官方有专门的镜像。
另外你用 docker 的场景是什么?
我自己玩的话都是用 docker-compose,例如建立一个 wordpress 目录,在里面放一个 docker-compose.yml 文件,内容是:
web:
image: wordpress
volumes:
- ./web/html/:/var/www/html
links:
- mysql
environment:
- WORDPRESS_DB_USER=wordpress
- WORDPRESS_DB_PASSWORD=password
- WORDPRESS_DB_NAME=wordpress
ports:
- "8001:80"
mysql:
image: mysql:5.7
volumes:
- ./mysql/conf.d/:/etc/mysql/conf.d
- ./mysql/datadir/:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_USER=wordpress
- MYSQL_PASSWORD=password
- MYSQL_DATABASE=wordpress
然后在同一目录执行 docker-compose up,wordpress 就起来了,所有需要永久保存的数据( www 目录及数据库文件)都在当前目录保存着,需要迁移时只要拷贝这个目录然后在新的电脑下执行下 docker-compose up 就算是部署完毕了。
这个是 docker-compose 老版本的例子,新版本语法有了些修改,不过这个老版本还一样能用。
这个例子使用的是现成的 docker 镜像(基本都是用 dockerfile 生成的),如果需要定制也可以指定 dockerfile 文件自己生成镜像。