cha*_*rar 5 docker spring-boot docker-compose
我有一个与 couchbase 通信的 spring-boot 应用程序。我将 Spring 应用程序构建为 Docker 镜像。为了运行应用程序,需要在 couchbase 设置中满足一些先决条件。当我先运行 couchbase 映像,然后运行 spring-boot 应用程序映像时,一切运行正常。但是,我需要将其自动化并从 docker-compose 文件运行,这意味着通过单个 docker-compose up 命令我应该能够首先运行 couchbase 映像,使用所有预设对其进行配置,然后开始运行 spring-boot应用程序。我遇到了很多讨论线程,但不幸的是我无法让它以某种方式工作。我尝试使用 cmd 和入口点,但没有成功。这是我的 docker-compose 文件
version: "2"
services:
expensetracker-cb:
image: chakrar27/expensetracker-cb
command: sh test_hello.sh
ports:
- 8080:8080
depends_on:
- mycouchbase
mycouchbase:
image: chakrar27/couchbase_new_10_08_2016
ports:
- 8091:8091
- 8092:8092
- 8093:8093
- 8094:8094
- 11210:11210
Run Code Online (Sandbox Code Playgroud)
事实上它根本不会触发 test_hello.sh 。这是 spring-bootexpensetracker 应用程序的 dockerfile
FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD expensetracker-cb-0.1.0.jar app.jar
RUN sh -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?
是的。
首先在 docker-compose.yml 中使用入口点而不是命令。由于您的入口点调用 java.
其次,将您的脚本包含在容器中:
version: "2"
services:
expensetracker-cb:
image: chakrar27/expensetracker-cb
entrypoint: sh /mnt/test_hello.sh
ports:
- 8080:8080
depends_on:
- mycouchbase
volumes:
- ./test_hello.sh:/mnt/test_hello.sh
mycouchbase:
image: chakrar27/couchbase_new_10_08_2016
ports:
- 8091:8091
- 8092:8092
- 8093:8093
- 8094:8094
- 11210:11210
Run Code Online (Sandbox Code Playgroud)
示例 test_hello.sh
#! /bin/bash
echo "Put your waiting code here, I will wait for 1 min"
sleep 60
java -Djava.security.egd=file:/dev/./urandom -jar /app.jar
Run Code Online (Sandbox Code Playgroud)
我在使用 Oracle 时遇到了同样的问题,我的最后手段是尝试执行 SQL 直到成功。我认为用沙发底座你可以做类似的事情。
| 归档时间: |
|
| 查看次数: |
4195 次 |
| 最近记录: |