我正在使用Jenkins进行单元测试。另外,我正在使用docker-compose链接spring boot及其Postgres数据库。每次在请求请求或提交期间执行Jenkins文件时,我都会使用compose堆栈并检查测试是否已正确执行。 如果测试失败,则容器中止,Jenkins通知,但在肯定的情况下,当春季启动应用程序启动时,Jenkins不会发出通知并坚持下去。
这是docker文件:
ExternalProject_Add(my_ext_project
GIT_REPOSITORY repo...
SOURCE_DIR "project_src"
BINARY_DIR "project_bin"
# "Standard" CMake project doesn't require to specify any COMMAND.
)
这是docker-compose文件:
FROM openjdk:10-jdk
COPY run.sh /
RUN chmod +x /run.sh
COPY ./target/*.jar /app.jar
CMD ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
这是运行docker compose并启动spring boot并运行测试的阶段:
version: '3.2'
services:
app:
restart: always
build: .
container_name: app
working_dir: /app
volumes:
- .:/app
ports:
- 8085:8080
links:
- pgsql
depends_on:
- pgsql
pgsql:
image: postgres:10
container_name: pgsql
ports:
- "5432:5432"
environment:
- POSTGRES_PASSWORD=passwordorsomething
- POSTGRES_USER=postgres
- POSTGRES_DB=pgsql
restart: always
在詹金斯(Jenkins)到达'docker-compose up --build --exit-code-from app'并且弹簧启动开始之后,它就停留在测试阶段。
答案 0 :(得分:0)
这只是一个猜测,但是restart: always
是使容器重新启动的原因。假设您的某些测试失败了?
添加docker-compose down
来避免僵尸容器是一个好主意