Docker卷持久性



我正在努力学习Docker。我已经在Windows10 Pro电脑上安装了Docker Desktop。

我开始创建一个PHP,MySQL网站并使用Docker运行。

我的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

我有一个www文件夹,里面有一个index.php.

当我运行时

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文件。

我做错了什么?

文件在那里,但您通过绑定挂载来隐藏它们。

您正在将装入的./www绑定到同一目录(/var/www/html(中,该目录将隐藏其内容。

此处:

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

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

相关内容

  • 没有找到相关文章

最新更新