0

我正在努力学习 Docker。我已经在我的 Windows10 Pro 计算机上安装了 Docker Desktop。

我开始使用 Docker 建立和运行 PHP、MySQL 网站。

我的 docker-compose.yml 看起来像

version: "3.8"
services:
    www:
        build: .
        ports: 
            - "80:80"
        volumes:
            - ./www:/var/www/html            
        links:
            - db
        networks:
            - default
    db:
        image: mysql:8.0
        ports: 
            - "3306:3306"
        command: --default-authentication-plugin=mysql_native_password
        environment:
            MYSQL_DATABASE: myDb
            MYSQL_USER: user
            MYSQL_PASSWORD: test
            MYSQL_ROOT_PASSWORD: test 
        volumes:
            - ./dump:/docker-entrypoint-initdb.d
            - ./conf:/etc/mysql/conf.d
            - persistent:/var/lib/mysql
        networks:
            - default
    phpmyadmin:
        image: phpmyadmin/phpmyadmin
        links: 
            - db:db
        ports:
            - 8000:80
        environment:
            MYSQL_USER: user
            MYSQL_PASSWORD: test
            MYSQL_ROOT_PASSWORD: test 
volumes:
    persistent:

和 DockerFile 看起来像

FROM php:7.3-apache 
RUN docker-php-ext-install mysqli
RUN apt-get update \
    && apt-get install -y libzip-dev \
    && apt-get install -y wget \
    && apt-get install -y zlib1g-dev \
    && rm -rf /var/lib/apt/lists/* \
    && docker-php-ext-install zip

我有一个带有index.php的www文件夹。

当我跑

docker-compose up -d

我的 PHP、mySQL 站点启动并正常运行,我可以访问 index.php 并获得预期结果。

到现在为止还挺好。

现在,我想更改 Dockerfile 以设置一个 php 论坛网站 (phpbb) - 所以我更新了我的 Dockerfile,如下所示:

FROM php:7.3-apache 
RUN docker-php-ext-install mysqli
RUN apt-get update \
    && apt-get install -y libzip-dev \
    && apt-get install -y wget \
    && apt-get install -y zlib1g-dev \
    && rm -rf /var/lib/apt/lists/* \
    && docker-php-ext-install zip

WORKDIR /var/www/html

RUN wget https://download.phpbb.com/pub/release/3.3/3.3.0/phpBB-3.3.0.tar.bz2 \
&& tar -xvjf phpBB-3.3.0.tar.bz2
&& ls -l

当我跑

docker-compose build --no-cache

我可以看到预期的结果 - 即“ls”命令在 /var/www/html 中显示所有预期的 phpBB 文件

但是,当我跑步时

docker-compose up -d

我的容器只有/var/www/html 中的index.php (www 文件夹中的index.php)。没有任何 phpBB 文件存在。

我究竟做错了什么?

4

1 回答 1

0

这些文件在那里,但您通过绑定安装隐藏了它们。

您将挂载绑定./www到同一目录 ( /var/www/html) 中,这将隐藏其内容。

这里:

www:
  ...
  volumes:
    - ./www:/var/www/html  

构建映像时,您可以正确看到文件,但是一旦运行docker-compose,就会创建绑定挂载并隐藏这些文件。

于 2020-07-19T14:47:39.560 回答