如何在 DockerFile 中为 H2 数据库定义 IP 地址
Posted
技术标签:
【中文标题】如何在 DockerFile 中为 H2 数据库定义 IP 地址【英文标题】:How to define IP Address in DockerFile for H2 Database 【发布时间】:2017-01-03 14:16:49 【问题描述】:当我运行 docker 文件来运行 H2 数据库时,它会自动分配 IP 地址。
如何通过环境设置IP地址,所以docker只允许TCP连接和HTTP连接两个IP地址。
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
【问题讨论】:
【参考方案1】:尽可能不要在 docker 范例中使用任何静态 ip。
如果您不想让服务与其他服务通信,请使用您在 docker-compose 文件中定义的服务名称,比如“db”
version: "2"
services:
db:
image: klousiaj/oracle-java:7.79
app:
image: busybox
所以从应用程序中,您可以使用telnet db $dbport
连接到数据库,例如就mysql而言,你用telnet db 3306
。
当然,db也可以使用telnet app
连接到app上的anyu端口。
您永远不想自己处理 IP 或网络,除非您真的必须这样做(非常罕见的情况)。
如果你想从主机访问 app-web 端口,你将把那个暴露给主机
version: "2"
services:
db:
image: klousiaj/oracle-java:7.79
app:
image: nginx
port:
- 80:80
也就是说,你现在可以使用你的主机ip访问app的nginx的80端口,“wget http://:80
【讨论】:
以上是关于如何在 DockerFile 中为 H2 数据库定义 IP 地址的主要内容,如果未能解决你的问题,请参考以下文章
在 Servlet 和 JDBC 中为 JUnit 分离 H2 数据库 [关闭]
如何在 build.gradle 中指定“pig-0.13.0-h2.jar”依赖?
如何在 SceneKit 的场景视图中为阴影正确添加定向光?