桂林网站制作培训班,一般人公司注册费用,效果图是怎么做出来的,做电影网站详细教程Jenkinsfile: Docker的NETWORK_NAME不要使用bridge默认网络#xff0c;要使用自定义的网络如test默认 bridge 网络#xff1a;容器间不能用名字互相访问#xff0c;只能用 IP。自定义网络#xff1a;容器间可以用名字互相访问#xff0c;Docker 自动做了 DNS 解析。pipeli…Jenkinsfile: Docker的NETWORK_NAME不要使用bridge默认网络要使用自定义的网络如test默认 bridge 网络容器间不能用名字互相访问只能用 IP。自定义网络容器间可以用名字互相访问Docker 自动做了 DNS 解析。
pipeline {agent anyenvironment {// 定义镜像名称和标签作为环境变量IMAGE_NAME my-application IMAGE_TAG latestCONTAINER_NAME my-app-containerVOLUME_NAME app-data-volumeNETWORK_NAME test // 使用自定义网络名称HOST_PORT 8080CONTAINER_PORT 8080}stages {stage(检查运行中的容器) {steps {script {// 检查容器是否存在并移除try {sh docker container inspect ${CONTAINER_NAME}echo 容器 ${CONTAINER_NAME} 已存在。正在停止并移除...sh docker container stop ${CONTAINER_NAME}sh docker container rm ${CONTAINER_NAME}} catch (Exception e) {echo 未找到名为 ${CONTAINER_NAME} 的容器。}// 检查镜像是否存在并移除try {sh docker image inspect ${IMAGE_NAME}:${IMAGE_TAG}echo 镜像 ${IMAGE_NAME}:${IMAGE_TAG} 已存在。正在移除...sh docker rmi ${IMAGE_NAME}:${IMAGE_TAG} -f} catch (Exception e) {echo 未找到镜像 ${IMAGE_NAME}:${IMAGE_TAG}。}}}}stage(创建 Docker 卷) {steps {script {// 检查卷是否存在不存在则创建try {sh docker volume inspect ${VOLUME_NAME}echo 卷 ${VOLUME_NAME} 已存在。} catch (Exception e) {echo 正在创建卷 ${VOLUME_NAME}...sh docker volume create ${VOLUME_NAME}}}}}stage(构建 Docker 镜像) {steps {script {// 构建 Docker 镜像echo 正在构建 Docker 镜像 ${IMAGE_NAME}:${IMAGE_TAG}...sh docker build -t ${IMAGE_NAME}:${IMAGE_TAG} .}}}stage(运行 Docker 容器) {steps {script {// 运行 Docker 容器挂载卷并映射端口echo 正在启动容器 ${CONTAINER_NAME}...sh docker run -d \--name ${CONTAINER_NAME} \-p ${HOST_PORT}:${CONTAINER_PORT} \-v ${VOLUME_NAME}:/app/data \--network ${NETWORK_NAME} \${IMAGE_NAME}:${IMAGE_TAG}}}}stage(清理) {steps {script {// 移除未使用的镜像echo 正在清理未使用的 Docker 镜像...sh docker image prune -f}}}}post {success {echo 部署成功echo 应用程序可通过 http://服务器IP:${HOST_PORT} 访问}failure {echo 部署失败}always {echo 流水线执行完成。}}
}Dockerfile:
# 使用官方 Python 基础镜像轻量级版本
FROM python:3.10-slim# 设置工作目录
WORKDIR /app# 先复制依赖文件以便利用 Docker 缓存层
COPY requirements.txt .# 设置 pip 使用国内镜像源加速下载可根据需要修改或删除
RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple# 安装依赖使用 --no-cache-dir 减少镜像大小
RUN pip install --no-cache-dir -r requirements.txt# 复制项目所有文件放在依赖安装之后以便代码变更不影响依赖层缓存
COPY . .# 暴露应用端口根据实际应用修改
EXPOSE 8080# 设置容器启动命令根据实际应用修改
CMD [python, app.py]