0

我是 docker 和 docker-compose 的新手,我遇到了持久存储的问题。我有三个文件夹,我需要将文件保存在 docker 之外。我不知道我做错了什么。

docker-compose.yaml

version: '3.3'

services:
    webserver:
        build:
              context: ./
              dockerfile: webserver.DockerFile
        ports:
            - 80:80
            - 443:443
        volumes:
            - html:/var/www/html
            - platforms:/var/www/platforms
            - sites-available:/etc/apache2/sites-available
    mysql-server:
        image: mysql:8.0.20
        restart: always
        environment:
              MYSQL_ROOT_PASSWORD: somepassword555

    phpmyadmin:
        image: phpmyadmin/phpmyadmin:5.0.1
        restart: always
        environment:
                PMA_HOST: mysql-server
                PMA_USER: root
                PMA_PASSWORD: somepassword555
        ports:
                - "8080:80"

当我在此基础上运行构建时,我在网络服务器中获得了空文件夹。主机上的文件夹不为空。

编辑:澄清

在 HOST 上有:

webserver.DockerFile
docker-compose.yml
- html
--- index.php
--- ...
- platforms
--- dir1
--- dir2
--- dir3
--- ...
- sites-available
--- backend.conf
--- frontend.conf

在 webserver.Dockerfile 里面有:

RUN mkdir -p /var/www/html/backend
RUN mkdir -p /var/www/html/frontend
RUN a2ensite backend.conf frontend.conf

它不会在 HOST 上创建 'backend' 和 'frontend' 目录,然后在 a2ensite 上失败,并出现错误:

ERROR: Site backend does not exist!
ERROR: Site frontend does not exist!
ERROR: Service 'webserver' failed to build: The command '/bin/sh -c a2ensite backend.conf frontend.conf' returned a non-zero code: 1

这一切都向我表明,我想与 HOST 链接/安装的 DOCKER 上的目录实际上是空的:

/var/www/html
/var/www/platforms
/etc/apache2/sites-available

但 HOST 上的目录不为空。

4

1 回答 1

0

请记住,双点左侧的文件夹绑定到容器 :/var/www/html 中。因此,如果在启动时未检查容器,如果文件夹已满,它将被覆盖并再次为空。你可以编写一个入口点脚本来帮助你。

于 2020-09-30T08:17:13.080 回答