【发布时间】:2017-05-17 16:01:01
【问题描述】:
以下是用于运行 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}
我收到错误:
错误:对于 db 无法为服务 db 创建容器:无效的卷规范“。”:无效的卷目标路径:“。”挂载路径必须是绝对路径。
【问题讨论】:
-
这行不通 - 每个服务不能有多个
command条目。您可能想继续使用您的 Dockerfile,然后使用 Docker Compose 的build选项来引用它:docs.docker.com/compose/compose-file/#/build -
@nwinkler 你能告诉我如何将 h2 dockerfile 转换为 docker compose 吗?
-
docker-compose 不是 docker 的替代品,而是运行 docker 构建的 docker 镜像。你需要先用 docker 构建它。
标签: docker docker-compose h2 dockerfile