gpt4 book ai didi

docker - 如何使用 docker-compose.yml 文件命名卷?

转载 作者:IT老高 更新时间:2023-10-28 21:35:12 31 4
gpt4 key购买 nike

我是 Docker 新手,我正在尝试了解如何设置创建的数据卷的名称。目前该目录自动命名为/var/libs/docker 下的长哈希,这对用户来说很不友好。

我正在尝试为 MODX 设置开发环境,如下所示: https://github.com/modxcms/docker-modx

目前我的docker-compose.yml文件如下:

web:
image: modx
links:
- db:mysql
ports:
- 80:80
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: example
ports:
- 3306:3306
command: mysqld --sql-mode=NO_ENGINE_SUBSTITUTION
myadmin:
image: phpmyadmin/phpmyadmin
links:
- db:db
ports:
- 8080:8080

这很好用,但我不确定如何命名我将直接使用我的 IDE 编辑的数据卷。

(作为一个附带问题,它是否必须在/var/libs/docker 下创建?或者有没有办法将它设置到我的主文件夹中的目录?)

更新:感谢@juliano 的帮助,我已将 docker-compose.yml 文件更新为:

version: '2'

services:
web:
image: modx
volumes:
- html:/home/muzzstick/dev/modxdev
links:
- db:mysql
ports:
- 80:80
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: example
ports:
- 3306:3306
command: mysqld --sql-mode=NO_ENGINE_SUBSTITUTION
myadmin:
image: phpmyadmin/phpmyadmin
links:
- db:db
ports:
- 8080:8080

volumes:
html:
external: false

不幸的是,这似乎阻止了 Web 容器的运行。db 和 myadmin 容器显示它们运行正常。没有任何错误...如果我输入 docker start docker_web_1 它似乎已启动,但 docker ps -a 显示它一启动就退出了。

更新 2

运行 docker-compose up -d 似乎运行没有问题。但正如您在下面看到的,Web 容器在创建后立即退出。

    CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS                     PORTS                            NAMES
a1dd6d8ac94e modx "/entrypoint.sh apach" 10 seconds ago Exited (1) 5 seconds ago docker_web_1
ee812ae858dc phpmyadmin/phpmyadmin "/run.sh phpmyadmin" 10 seconds ago Up 5 seconds 80/tcp, 0.0.0.0:8080->8080/tcp docker_myadmin_1
db496134e0cf mysql "docker-entrypoint.sh" 11 seconds ago Up 10 seconds 0.0.0.0:3306->3306/tcp docker_db_1

更新 3OK,这个容器的错误日志显示:

error: missing MODX_DB_HOST and MYSQL_PORT_3306_TCP environment variables
Did you forget to --link some_mysql_container:mysql or set an external db
with -e MODX_DB_HOST=hostname:port?

此错误似乎源自 https://github.com/modxcms/docker-modx/blob/master/apache/docker-entrypoint.sh#L15-L20

可能是在 docker-compose 版本 2 中,链接的处理方式有所不同?

最佳答案

使用 version 2 of compose files 创建命名数据卷您将有一个单独的区域:

version: '2'

services:
db:
image: postgres
volumes:
- amazingvolume:/var/lib/postgresql/data

volumes:
amazingvolume:
external: true

所以你可以定义卷名(amazingvolume),如果它是external or not在您的服务(本例中为 db)下,您可以定义要挂载的目录。

关于docker - 如何使用 docker-compose.yml 文件命名卷?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41303760/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com