基于 alpine 制作docker镜像的问题

Alpine主要有以下问题

1.alpine操作系统下的软件库(国外)经常崩

# 国外的软件库崩掉时会出现“ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.16/main: temporary error (try again later)”

# 我们需要使用国内的软件库镜像
# https://mirrors.ustc.edu.cn/alpine/
# 帮助手册 https://mirrors.ustc.edu.cn/help/alpine.html

2.字体,字符集,时区的问题

alpine过于精简,会出现一下问题:
1 中文乱码
2 系统时间混乱
3 由于不支持字体,导出excel等功能,输出结果是空白

这需要我们自己下载字体包,设置时区,规定字符集编码

3.一个超级坑的问题

执行构建命令:
docker build -t alpinelinuxjre .

即使用的是国内软件库也会出现“ERROR: http://mirrors.ustc.edu.cn/alpine/v3.16/: temporary error (try again later)”

这是因为docker的网络问题,构建时要使用本地网络。

4.另一个超级坑的问题

alpine底层的c函数库是基于musl libc的,不支持glibc(当然你可以自己下载)。
而oracle的jdk依赖的是glibc。所以alpine不能愉快的装oracle的jdk。
所以我下面就选择了装OpenJdk(够用即可)。

最终解决DockerFile如下

FROM docker.io/alpine

WORKDIR /U01

ADD OpenJDK8U-jre_x64_alpine-linux_hotspot_8u345b01.tar.gz /U01

RUN echo -e "https://mirrors.ustc.edu.cn/alpine/v3.16/main/" > /etc/apk/repositories \
    && apk update && apk upgrade && apk add ca-certificates && update-ca-certificates \
    && apk add --update tzdata && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && echo "Asia/Shanghai" > /etc/timezone \
    && apk add --update ttf-dejavu fontconfig && rm -rf /var/cache/apk/*

ENV TZ=Asia/Shanghai
ENV LANG=C.UTF-8 \
    LANG=zh_CN.UTF-8 \
    LANGUAGE=zh_CN.UTF-8

ENV JRE_HOME /U01/jdk8u345-b01-jre
ENV PATH ${PATH}:${JRE_HOME}/bin

docker build -t alpinelinuxjre . --network=host

OpenJDK8U-jre_x64_alpine-linux_hotspot_8u345b01.tar.gz 是我自己下载的。具体的地址:
https://adoptium.net/zh-CN/temurin/releases/
在这里有提供适合AlpineLinux的Openjdk可以自行下载。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
1. 安装Docker 在CentOS上安装Docker,可以使用官方的安装脚本。打开终端并运行以下命令: ``` $ curl -fsSL https://get.docker.com/ | sh ``` 如果您的系统上没有curl,请先安装它: ``` $ yum install curl ``` 2. 下载PostgreSQL的Dockerfile 我们可以从官方的Docker Hub上下载PostgreSQL的Dockerfile。使用以下命令: ``` $ curl -O https://raw.githubusercontent.com/docker-library/postgres/master/13/alpine/Dockerfile ``` 3. 编辑Dockerfile 使用vim或nano等编辑器打开下载下来的Dockerfile文件,进行以下配置: ``` FROM centos:latest ENV POSTGRES_USER postgres ENV POSTGRES_PASSWORD postgres ENV POSTGRES_DB postgres RUN yum update -y && \ yum install -y postgresql-server postgresql-contrib && \ yum clean all USER postgres RUN initdb --encoding=UTF8 --locale=C -D /var/lib/pgsql/data && \ pg_ctl -D /var/lib/pgsql/data -l logfile start && \ psql --command "CREATE USER postgres WITH SUPERUSER PASSWORD 'postgres';" && \ createdb -O postgres postgres VOLUME ["/var/lib/pgsql/data"] EXPOSE 5432 CMD ["postgres", "-D", "/var/lib/pgsql/data", "-c", "config_file=/var/lib/pgsql/data/postgresql.conf"] ``` 4. 构建Docker镜像 使用以下命令构建Docker镜像: ``` $ docker build -t my_postgresql . ``` 这将构建一个名为“my_postgresql”的新Docker镜像。 5. 运行PostgreSQL容器 使用以下命令运行PostgreSQL容器: ``` $ docker run -d -p 5432:5432 --name my_postgresql_container my_postgresql ``` 这将创建一个名为“my_postgresql_container”的新容器,并将容器的端口5432映射到主机的端口5432。 6. 测试PostgreSQL容器 为了测试新的PostgreSQL容器,请使用以下命令: ``` $ psql -h localhost -U postgres -d postgres ``` 您应该现在可以通过psql连接到PostgreSQL容器。 现在您已经成功地使用Docker创建了一个基于CentOS的PostgreSQL镜像,并运行了一个新的PostgreSQL容器
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值