2
0
Эх сурвалжийг харах

docker: reduce docker images size

Nick Peng 3 жил өмнө
parent
commit
ff0f42b87c
1 өөрчлөгдсөн 31 нэмэгдсэн , 9 устгасан
  1. 31 9
      Dockerfile

+ 31 - 9
Dockerfile

@@ -1,16 +1,38 @@
 FROM ubuntu:latest as smartdns-builder
-
+LABEL previous-stage=smartdns-builder
 COPY . /smartdns/
 RUN apt update && \
-    apt install -y make gcc libssl-dev && \
-    cd smartdns && \
-    sh ./package/build-pkg.sh --platform debian --arch `dpkg --print-architecture`
-
-FROM ubuntu:latest
-COPY --from=smartdns-builder /smartdns/package/*.deb /opt/
-RUN dpkg -i /opt/*.deb && \
-    rm /opt/*.deb -fr
+    apt install -y perl wget make musl-tools musl-dev && \
+    OPENSSL_VER=1.1.1f && \
+    mkdir /build -p && \
+    ln -s /usr/include/linux /usr/include/$(uname -m)-linux-musl && \
+    ln -s /usr/include/asm-generic /usr/include/$(uname -m)-linux-musl && \
+    ln -s /usr/include/$(uname -m)-linux-gnu/asm /usr/include/$(uname -m)-linux-musl && \
+    cd /build && \
+    wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/openssl_${OPENSSL_VER}.orig.tar.gz && \
+    tar xf openssl_${OPENSSL_VER}.orig.tar.gz && \
+    cd openssl-${OPENSSL_VER} && \
+    export CC=musl-gcc && \
+    if [ "$(uname -m)" = "aarch64" ]; then \
+        ./config --prefix=/opt/build no-tests -mno-outline-atomics ; \
+    else \ 
+        ./config --prefix=/opt/build no-tests; \
+    fi && \
+    make all -j8 && make install_sw && \
+    cd /smartdns && \
+    export CFLAGS="-I /opt/build/include" && \
+    export LDFLAGS="-L /opt/build/lib" && \
+    sh ./package/build-pkg.sh --platform linux --arch `dpkg --print-architecture` --static && \
+    mkdir /release -p && \
+    cd /smartdns/package && tar xf *.tar.gz && \
+    cp /smartdns/package/smartdns/etc /release/ -a && \
+    cp /smartdns/package/smartdns/usr /release/ -a && \
+    chmod +x /release/etc/init.d/smartdns && \
+    mkdir /release/var/log/ /release/var/run/ -p && \
+    rm -fr /build /smartdns
 
+FROM busybox:latest
+COPY --from=smartdns-builder /release/ /
 EXPOSE 53/udp
 VOLUME "/etc/smartdns/"