[英]Set values in application.conf with Docker
Neo4j数据库用于我的应用程序,其凭据在application.conf文件中定义,该文件存储在project_folder / configs中。 我已经为该项目创建了一个Dockerfile以及docker-compose文件,并且我想在docker-compose中将neo4j连接URL更改为环境参数。 如何使用docker-compose或Dockerfile更改application.conf文件中的字段值?
这是配置文件的样子:
neo4j{
url= "bolt://localhost:7687"
user = "user"
password = "password"
}
docker-compose文件:
version: '3.3'
services:
neo4j_db:
image: neo4j:latest
ports:
- "7474:7474"
- "7473:7473"
- "7687:7687"
volumes:
- $HOME/neo4j/import:/var/lib/neo4j/import
- $HOME/neo4j/data:/neo4j/data
- $HOME/neo4j/conf:/neo4j/conf
- $HOME/neo4j/logs:/neo4j/logs
environment:
- NEO4J_dbms_active__database=graph.db
benchmarks:
image: "image_name"
volumes:
- ./:/workdir1
working_dir: /workdir1
links:
- neo4j_db
应用程序Dockerfile:
FROM java:8
ENV SCALA_VERSION 2.11.8
ENV SBT_VERSION 1.1.1
ENV SPARK_VERSION 2.2.0
ENV SPARK_DIST spark-$SPARK_VERSION-bin-hadoop2.6
ENV SPARK_ARCH $SPARK_DIST.tgz
ENV NEO4J_CONFIG neo4j_local
ENV BENCHMARK_NAME read_spark_single
WORKDIR /opt
# Install Scala
RUN \
cd /root && \
curl -o scala-$SCALA_VERSION.tgz http://downloads.typesafe.com/scala/$SCALA_VERSION/scala-$SCALA_VERSION.tgz && \
tar -xf scala-$SCALA_VERSION.tgz && \
rm scala-$SCALA_VERSION.tgz && \
echo >> /root/.bashrc && \
echo 'export PATH=~/scala-$SCALA_VERSION/bin:$PATH' >> /root/.bashrc
# Install SBT
RUN \
curl -L -o sbt-$SBT_VERSION.deb https://dl.bintray.com/sbt/debian/sbt-$SBT_VERSION.deb && \
dpkg -i sbt-$SBT_VERSION.deb && \
rm sbt-$SBT_VERSION.deb
# Install Spark
RUN \
cd /opt && \
curl -o $SPARK_ARCH http://d3kbcqa49mib13.cloudfront.net/$SPARK_ARCH && \
tar xvfz $SPARK_ARCH && \
rm $SPARK_ARCH && \
echo 'export PATH=$SPARK_DIST/bin:$PATH' >> /root/.bashrc
EXPOSE 9851 9852 4040 7474 7473 7687
VOLUME /workdir1
CMD /workdir1/runapp.sh "$NEO4J_CONFIG" "$BENCHMARK_NAME"
有多种方法可以执行此操作,但是由于您已经在要求使用env变量来执行此操作,因此更改application.yaml如下所示:
neo4j {
url = "bolt://${HOSTNAME}"
user = "user"
password = "password"
}
并通过添加以下内容在docker compose中设置变量:
environment:
- HOSTNAME=localhost:4567
只要您提供HOSTNAME env,它就会起作用。 变量,否则将无法加载应用程序配置。
如果出于某种原因要保留默认值,请使用以下命令:
neo4j {
url = "bolt://localhost:4567"
url = ${?HOSTNAME}
user = "user"
password = "password"
}
并通过适当的HOSTNAME env。 docker-compose文件中的变量。 如果已定义,此配置将启动。 如果未提供,则默认为第一个值。
有关详细信息,请检查: https : //github.com/lightbend/config
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.