docker自定义制作镜像

创建运行基础环境

本Dockerfile文件安装jdk8,python3.10,node.js环境

# 使用Ubuntu作为基础镜像
FROM ubuntu:20.04

# 设置环境变量避免交互式提示
ENV DEBIAN_FRONTEND=noninteractive

# 1. 安装基础依赖
RUN apt-get update && \
    apt-get install -y \
    build-essential \
    zlib1g-dev \
    libncurses5-dev \
    libgdbm-dev \
    libnss3-dev \
    libssl-dev \
    libreadline-dev \
    libffi-dev \
    libsqlite3-dev \
    wget \
    curl \
    tar \
    vim \
    && rm -rf /var/lib/apt/lists/*

# 2. 安装Java 8(使用本地包)
# 将本地的jdk包复制到镜像中(请确保Dockerfile同级目录有jdk.tar.gz)
COPY jdk.tar.gz /tmp/
RUN mkdir -p /usr/local/java && \
    tar -xzf /tmp/jdk.tar.gz -C /usr/local/java/ && \
    rm /tmp/jdk.tar.gz

# 设置Java环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_202
ENV PATH $JAVA_HOME/bin:$PATH

# 3. 编译安装Python 3.10(使用本地包)
# 将本地的Python源码包复制到镜像中(请确保Dockerfile同级目录有Python-3.10.X.tgz)
COPY Python-3.10.4.tgz /tmp/
RUN tar -xzf /tmp/Python-3.10.4.tgz -C /tmp/ && \
    cd /tmp/Python-3.10.4 && \
    ./configure --enable-optimizations && \
    make -j $(nproc) && \
    make altinstall && \
    ln -s /usr/local/bin/python3.10 /usr/local/bin/python3 && \
    ln -s /usr/local/bin/python3.10 /usr/local/bin/python && \
    ln -s /usr/local/bin/pip3.10 /usr/local/bin/pip && \
    rm -rf /tmp/Python-3.10.0*

# 4. 安装本地Python包(可选)
# 将本地requirements.txt复制到镜像中
COPY requirements.txt /app/
RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r /app/requirements.txt && \
    rm -rf /app/requirements.txt

# 安装node.js
COPY node-v22.14.0-linux-x64.tar.xz /tmp/    
RUN tar -xf /tmp/node-v22.14.0-linux-x64.tar.xz -C /usr/local --strip-components=1 && \
    rm -rf /tmp/node-v22.14.0-linux-x64.tar.xz

# 验证环境
RUN java -version && python --version && node --version && npm --version

# 设置工作目录
WORKDIR /app

构建docker镜像

docker build -t 'python3-10-jdk8-image:v1.0' .

构建java,pyhton应用

FROM python3-10-jdk8-image:v3.0

USER root
WORKDIR /app/xxxxx
MAINTAINER xxxxx
ADD xxxxx.jar /app/xxxxx/xxxxx.jar

# 下载tini
RUN apt-get update && \
    apt-get install -y --no-install-recommends tini && \
    rm -rf /var/lib/apt/lists/*
    
# 使用tini启动java应用
ENTRYPOINT ["/usr/bin/tini", "--"]
CMD ["java","-jar","-Duser.timezone=GMT+8","-Dfile.encoding=UTF-8","/app/xxxxx/xxxxx.jar" ]

#暴露端口
EXPOSE 18081

运行构建

docker build -t 'xxxxx-image' .

编写更新脚本start.sh文件

#!/usr/bin/env bash
docker stop xxxxxx-app
docker rm xxxxxx-app
docker rmi xxxxxx-image
docker build -t xxxxxx-image .
docker run --name xxxxxx-app \
--restart=always -p 18081:18081 \
-v /data/xxxxxx/config:/app/xxxxxx/config \
-d xxxxxx-image

直接运行start.sh文件构建运行脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值