gpt4 book ai didi

ubuntu - 在 docker build 的一个步骤中在容器中运行后台进程

转载 作者:太空宇宙 更新时间:2023-11-03 16:54:49 24 4
gpt4 key购买 nike

我想在 docker build 期间运行应用程序的集成测试。这些测试需要 Redis 服务器可用。

如何运行 redis-server 并在集成测试步骤(即 gradle build)期间让它在后台运行?

这是我的 Dockerfile 的本质:

FROM ubuntu:16.04

# apt-get install stuff
# ...
# install gradle
# build and install redis

WORKDIR /app
ADD . /app

# TODO: start redis-server

# run unit tests / integration tests of app
RUN /opt/gradle/gradle-4.6/bin/gradle build --info

# TODO: stop redis-server

# build app
RUN ./gradlew assemble

# start app with
# docker run
CMD ["java", "-jar", "my_app.jar"]

最佳答案

作为halfer his comment 中的状态, 这不是好的做法。

但是为了完整起见,我还是想分享原始问题的解决方案:

RUN nohup bash -c "redis-server &" && sleep 4 && /opt/gradle/gradle-4.6/bin/gradle build --info

这只为这个单层运行 redis-serversleep 4 只是为了给 redis 足够的启动时间。

所以 Dockerfile 看起来如下:

FROM ubuntu:16.04

# apt-get install stuff
# ...
# install gradle
# build and install redis

WORKDIR /app
ADD . /app

# run unit tests / integration tests of app
RUN nohup bash -c "redis-server &" && sleep 4 && /opt/gradle/gradle-4.6/bin/gradle build --info

# TODO: uninstall redis

# build app
RUN ./gradlew assemble

# start app with
# docker run
CMD ["java", "-jar", "my_app.jar"]

关于ubuntu - 在 docker build 的一个步骤中在容器中运行后台进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50211207/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com