【发布时间】:2019-06-26 08:20:22
【问题描述】:
我正在使用 Docker 为 Wordpress 配置多容器设置(根据 this article)。
目前,我有一个 wordpress 服务,其中有一个命名卷,如下所示:
volumes:
- wordpress:/var/www/html
这对于默认的 Wordpress 安装非常有效。但我也有一些文件需要传递到主题/插件等的容器中。
我知道这也可以通过在服务器上的两个路径和相关容器之间设置映射来实现。像这样的:
volumes:
- ./wp-content:/var/www/html/wp-content
我的理解是卷被命名以便其他容器可以与之交互(在我的情况下是必需的,您可以在下面的完整 docker-compose.yaml 文件中看到)。
那么,创建 命名卷 的正确方法是什么?该卷设置路径以便将我的文件挂载到容器上?
这是完整的docker-compose.yaml 文件:
version: '3'
services:
db:
image: mysql:5.7
container_name: db
restart: unless-stopped
env_file: .env
volumes:
- dbdata:/var/lib/mysql
command: '--default-authentication-plugin=mysql_native_password'
networks:
- app-network
wordpress:
depends_on:
- db
image: wordpress:5.1.1-fpm-alpine
container_name: wordpress
restart: unless-stopped
env_file: .env
environment:
- WORDPRESS_DB_HOST=db:3306
- WORDPRESS_DB_USER=$MYSQL_USER
- WORDPRESS_DB_PASSWORD=$MYSQL_PASSWORD
- WORDPRESS_DB_NAME=$MYSQL_DATABASE
volumes:
- wordpress:/var/www/html
networks:
- app-network
webserver:
depends_on:
- wordpress
image: nginx:1.15.12-alpine
container_name: webserver
restart: unless-stopped
ports:
- "80:80"
volumes:
- wordpress:/var/www/html
- ./nginx-conf:/etc/nginx/conf.d
- certbot-etc:/etc/letsencrypt
networks:
- app-network
phpmyadmin:
depends_on:
- db
image: phpmyadmin/phpmyadmin
restart: always
env_file: .env
ports:
- '8080:80'
environment:
PMA_HOST: db
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
networks:
- app-network
certbot:
depends_on:
- webserver
image: certbot/certbot
container_name: certbot
env_file: .env
volumes:
- certbot-etc:/etc/letsencrypt
- wordpress:/var/www/html
command: certonly --webroot --webroot-path=/var/www/html --email ${LETSENCRYPT_EMAIL} --agree-tos --no-eff-email --staging -d ${DOMAIN} -d www.${DOMAIN}
volumes:
certbot-etc:
wordpress:
dbdata:
networks:
app-network:
driver: bridge
【问题讨论】:
-
能否请您解释一下问题出在哪里,
wordpress:/var/www/html将您容器上的路径设置为/var/www/html -
好的,首先感谢您抽出时间@LinSel
-
我正在寻找我放置在服务器上(位于用户目录中)的文件以安装在容器中。就像
./wp-content:/var/www/html/wp-content一样。但由于wordpress命名版本在多个位置使用,我不确定如何执行此操作,因为我认为删除名称会导致容器之间的连接中断 -
如果不是很明显,我对 docker 还是很陌生,所以这对我来说有点学习曲线!
标签: wordpress docker docker-compose docker-volume