我在码头上安装了MySQL和PhpMyAdmin
MySQL卷装入非常好,但我也希望容器的/var/www/html/libraries、/var/www/html/themes文件夹被保存/保存到我的主机上。所以如果我改变了任何文件,它就会保持这样..
这是我的docker-compose.yml
version: '3.5'
services:
mysql:
container_name: mysql
image: mysql
restart: always
volumes:
- ./var/lib/mysql:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: root
phpmyadmin:
container_name: phpmyadmin
image: phpmyadmin/phpmyadmin:latest
restart: always
volumes:
- ./phpmyadmin/libraries:/var/www/html/libraries # Here's the problem
- ./phpmyadmin/themes:/var/www/html/themes # Here's the problem
environment:
PMA_HOST: mysql当前的问题是,它确实创建了文件夹/phpmyadmin/libraries、/phpmyadmin/themes,但是在文件夹中它们是空的,容器的目录(/var/www/html/libraries、/var/www/html/themes)也变为空。
我对码头很陌生,目前我不知道:
事先非常感谢。
发布于 2022-02-04 15:04:47
您的问题是在构建时填充/var/www/html,在运行时挂载卷,这会导致/var/www/html被本地的内容覆盖(即没有任何内容)。
您需要扩展PHPMyAdmin的Dockerfile,以便将这些目录的填充推迟到卷被挂载之后。您需要这样的设置:
修改docker-compose.yml如下:
...
phpmyadmin:
container_name: phpmyadmin
build:
# Use the Dockerfile located at ./build/phpmyadmin/Dockerfile to build this image
context: ./build/phpmyadmin
dockerfile: Dockerfile
restart: always
volumes:
- ./phpmyadmin/libraries:/var/www/html/libraries
- ./phpmyadmin/themes:/var/www/html/themes
environment:
PMA_HOST: mysql在./build/phpmyadmin/Dockerfile上创建一个具有以下内容的文件:
FROM phpmyadmin/phpmyadmin:latest
# Move the directories you want into a temporary directory
RUN mv /var/www/html /tmp/
# Modify the start up of this image to use a custom script
COPY ./custom-entrypoint.sh /custom-entrypoint.sh
RUN chmod +x /custom-entrypoint.sh
ENTRYPOINT ["/custom-entrypoint.sh"]
CMD ["apache2-foreground"]在./build/phpmyadmin/custom-entrypoint.sh上创建一个具有以下内容的自定义入口点:
#!/bin/sh
# Copy over the saved files
cp -r /tmp/html /var/www
# Kick off the original entrypoint
exec /docker-entrypoint.sh "$@"然后,您可以使用docker-compose up --build构建和启动一切。
注意:如果您试图对这些目录进行版本控制,这可能会给您带来问题--您可能需要修改custom-entrypoint.sh。
https://stackoverflow.com/questions/70980281
复制相似问题