这方面的最佳实践是什么?例如,假设我正在运行一个java或python应用程序。所以我会运行一个基于 java 或 python 的容器,但我的应用程序应该放在哪里?它们应该位于基础映像中的文件夹中,还是应该位于主机上装载的文件夹中?
应将jar 复制到开发、暂存、生产或测试环境的容器中。 有时开发人员可以挂载二进制文件,但这是后一种情况。 下面是标准的 Dockerfile 示例,"init"是应用程序统计信息的脚本:
FROM openjdk:8-jdk-slim
ENV MYSQL_URL="mysql-master:3306"
EXPOSE 8080
COPY build/libs/app-*SNAPSHOT.jar /opt/app.jar
COPY init /opt/
WORKDIR /opt
VOLUME /logs
ENTRYPOINT ["/opt/init"]
优点之一是,您可以测试、部署到暂存、部署到生产环境相同的容器,开发人员可以获取它以供本地运行以重现问题。
还可以将版本控制包含在容器标记中。您将从docker image ls
知道具有所需环境的应用程序版本已启动。