gpt4 book ai didi

Docker撰写无效的卷目标路径: '.' mount path must be absolute

转载 作者:行者123 更新时间:2023-12-02 17:46:12 24 4
gpt4 key购买 nike

以下是我的可运行H2数据库的dockerfile:
我想为此创建一个docker compose文件。

FROM klousiaj/oracle-java:7.79
MAINTAINER J.P. Klousia <klousiaj>

ENV DOWNLOAD http://www.h2database.com/h2-2016-10-31.zip
ENV DATA_DIR /opt/h2-data

RUN curl ${DOWNLOAD} -o h2.zip \
&& unzip h2.zip -d /opt/ \
&& rm h2.zip \
&& mkdir -p ${DATA_DIR}

EXPOSE 8082 9092

CMD java -cp /opt/h2/bin/h2*.jar org.h2.tools.Server \
-web -webAllowOthers -webPort 8082 \
-tcp -tcpAllowOthers -tcpPort 9092 \
-baseDir ${DATA_DIR}

VOLUME ${DATA_DIR}

以下是我正在尝试执行的docker compose:
version: '2'


services:
db:
image: klousiaj/oracle-java:7.79
environment:
DOWNLOAD: http://www.h2database.com/h2-2016-10-31.zip
DATA_DIR: /opt/h2-data
command: curl ${DOWNLOAD} -o h2.zip \ && unzip h2.zip -d /opt/ \ && rm h2.zip \ && mkdir -p ${DATA_DIR}
expose:
- "8082-9092"
command: java -cp /opt/h2/bin/h2*.jar org.h2.tools.Server \ -web -webAllowOthers -webPort 8082 \ -tcp -tcpAllowOthers -tcpPort 9092 \ -baseDir ${DATA_DIR}
volumes:
- ${DATA_DIR}

我收到错误消息:

ERROR: for db Cannot create container for service db: Invalid volume spec ".": Invalid volume destination path: '.' mount path must be absolute.

最佳答案

只是在Compose文件中是不允许的,因为那里没有模板引擎。

您将不需要定义

volumes: 
- /opt/h2-data

因为这将自动完成(匿名卷)。如果要命名卷使用
volumes: 
- myname:/opt/h2-data

或主机挂载
volumes: 
- /path/on/the/host:/opt/h2-data

因此$ {DATA_DIR}不会在组合文件的卷中(从ENV扩展)。有一些像rancher-compose这样的方言提供了这一点,但总的来说这是不可能的

更新:更新了我的答案,因为我以某种方式混合了Dockerfile/docker-compose.yml文件。这在Dockerfile中是有意义的,因为它只是用作变量。谢谢您对我的@Bmitch提示(再次)

关于Docker撰写无效的卷目标路径: '.' mount path must be absolute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41445579/

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