forrestlee commited on
Commit
e90e507
·
verified ·
1 Parent(s): 8ea6360

Create Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +47 -0
Dockerfile ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 第一阶段:构建环境
2
+ FROM perl:5.32-slim-bullseye AS builder
3
+
4
+ # 一次性设置环境变量
5
+ ENV PERL_CPANM_OPT="--verbose --notest --mirror https://cpan.metacpan.org" \
6
+ LIBEV_FLAGS=4
7
+
8
+ # 合并所有apt操作到单个RUN层
9
+ RUN set -eux; \
10
+ apt-get update && \
11
+ apt-get install -y --no-install-recommends \
12
+ ca-certificates \
13
+ wget \
14
+ gcc \
15
+ libc-dev \
16
+ libssl-dev \
17
+ zlib1g-dev \
18
+ && rm -rf /var/lib/apt/lists/*
19
+
20
+ # 批量安装所有CPAN模块(包含版本锁定)
21
+ RUN cpanm App::cpanminus && \
22
+ cpanm \
23
+ EV \
24
+ IO::Socket::IP \
25
+ IO::Socket::Socks \
26
+ Net::DNS::Native \
27
+ && cpanm --notest IO::Socket::SSL \
28
+ && cpanm Mojolicious@8.15
29
+
30
+ # 第二阶段:运行时环境
31
+ FROM perl:5.32-slim-bullseye
32
+
33
+ # 仅复制运行时需要的文件
34
+ COPY --from=builder /usr/local/lib/perl5 /usr/local/lib/perl5
35
+ COPY --from=builder /usr/local/bin/cpanm /usr/local/bin/cpanm
36
+ COPY --from=builder /usr/local/bin/* /usr/local/bin/
37
+
38
+ # 安装运行时依赖(无编译工具)
39
+ RUN apt-get update && \
40
+ apt-get install -y --no-install-recommends \
41
+ libssl-dev \
42
+ zlib1g-dev \
43
+ && rm -rf /var/lib/apt/lists/*
44
+
45
+ EXPOSE 3000
46
+ COPY dockerhub-public-proxy.pl /usr/local/bin/
47
+ CMD ["dockerhub-public-proxy.pl", "daemon"]