docker - 使用 docker-compose 挂载卷时出错
问题描述
我正在使用 docker-compose 来设置 domserver。我可以使用 dockerhub 的图像成功运行 domserver。但是,当我想将目录挂载到容器中时,它会弹出如下错误消息:
dj-domserver_1 | /scripts/start.sh: line 29: cd: /opt/domjudge/domserver: No such file or directory
https://i.stack.imgur.com/NVnWW.png
目录 domjudgeKChen 是由 dockerhub (domserver6.0.3) 的映像设置的容器中的 cp,这是 yml 文件中的 domserver 部分:
dj-domserver:
image: domjudge/domserver:6.0.3
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:ro
- ~/domjudgeKChen/opt/domjudge:/opt/domjudge
environment:
- CONTAINER_TIMEZONE=Asia/Taipei
- MYSQL_ROOT_PASSWORD=rootpw
- MYSQL_DATABASE=domjudge
- MYSQL_USER=domjudge
- MYSQL_PASSWORD=djpw
networks:
dj-db:
dj-judgedaemons:
depends_on:
- phpmyadmin
- dj-mariadb
ports:
- 9090:80
links:
- dj-mariadb:mariadb
restart: always
这是整个 .yml 文件代码:
另一个问题是我无法使用这个 yml 文件设置 Judgehost。这是使用 docker-compose up 时的错误消息
error: Authentication failed (error 401) while contacting http://domserver/api/v4/judgehosts. Check credentials in restapi.secret.
https://i.stack.imgur.com/xSEjm.png
如果我在 yml 中注释掉第 22 行,并且 domserver 可以使用 docker-compose up 和 mariadb 进行设置,phpmyadmin 也可以。
请帮我将目录挂载到容器中并成功设置judgehost映像。谢谢!
解决方案
IIRC 你必须对你的卷使用绝对引用;你不能使用~
.
用绝对路径替换~
卷挂载,并/domjudgeKChen/opt/domjudge
在卷定义中为其添加前缀。
推荐阅读
- mysql - 如何将 Laravel 雄辩的 where 子句编写为普通的 mysql 查询?
- websocket - 如何关闭本地主机上的 socket.io 获取请求?
- java - 在 Pega 平台上跟踪生成的 Java 的编译
- r - 如何使用 actionButton 更改 R Shiny 中 selectInput 上的选定值?
- python - 具有身份验证的 Selenium 代理
- mysql - xampp mysql文件夹是只读的,不能删除只读属性
- php - 致命错误:无法创建类实例
- python - 有没有办法在python中按大小对水平条形图进行排序?
- elasticsearch - apache NIFI ScrollElasticsearchHttp 过滤掉具有空字段的记录
- python - Pancakeswap 交易失败消息 python