asp.net dockerfile

mydocker/apline:20210517s6

FROM alpine:3.13

ENV S6_REL=2.2.0.3 S6_ARCH=amd64 TZ=Asia/Shanghai
ENV DOTNET_VER=5.0.6 DOTNET_ARCH=x64

LABEL base.maintainer=Roxedus
LABEL base.s6.rel=${S6_REL} base.s6.arch=${S6_ARCH}
LABEL dotnet_version=${DOTNET_VER} dotnet_arch=${DOTNET_ARCH}

RUN 
	set -eux && 
	sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories && 
	apk add --no-cache 
		curl 
		tar 
		bash 
		ca-certificates 
		coreutils 
		shadow 
		tzdata 
		libstdc++ 
		libgcc 
		icu-libs 
		libintl 
		libcap 
		libssl1.1 
		zlib 
		krb5-libs 
		&& 
	apk add --no-cache libgdiplus --repository https://mirrors.ustc.edu.cn/alpine/edge/testing/ && 
	curl -L -s https://github.com/just-containers/s6-overlay/releases/download/v${S6_REL}/s6-overlay-${S6_ARCH}.tar.gz | tar xzf - -C / &&  
	groupmod -g 1000 users && 
	useradd -u 1000 -U -d /config -s /bin/false rox && 
	usermod -G users rox && 
	mkdir -p 
		/app 
		/config && 
	rm -rf /tmp/* && 
	mkdir -p /etc/cont-init.d && 
	echo IyEvdXNyL2Jpbi93aXRoLWNvbnRlbnYgYmFzaAoKUFVJRD0ke1BVSUQ6LTEwMDB9ClBHSUQ9JHtQR0lEOi0xMDAwfQoKZ3JvdXBtb2QgLW8gLWcgIiRQR0lEIiByb3gKdXNlcm1vZCAtbyAtdSAiJFBVSUQiIHJveAoKZWNobyAiClVzZXIgdWlkOiAgICAkKGlkIC11IHJveCkKVXNlciBnaWQ6ICAgICQoaWQgLWcgcm94KQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiIKCmNob3duIC1SIHJveDpyb3ggL2FwcApjaG93biAtUiByb3g6cm94IC9jb25maWc= | base64 -d >/etc/cont-init.d/1-prep-env

RUN 
  mkdir -p /usr/share/dotnet 
  && curl -L -s https://dotnetcli.azureedge.net/dotnet/aspnetcore/Runtime/${DOTNET_VER}/aspnetcore-runtime-${DOTNET_VER}-linux-musl-${DOTNET_ARCH}.tar.gz | tar xzf - -C /usr/share/dotnet 
  && ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet 
  && setcap CAP_NET_BIND_SERVICE=+eip /usr/share/dotnet/dotnet 
  && mkdir -p /etc/services.d/
	
VOLUME [ "/config" ]

WORKDIR /app

ENTRYPOINT ["/init"]
mydocker/aspnetcore:apline5.0.6

FROM mydocker/apline:20210517s6

ENV DOTNET_VER=5.0.6 DOTNET_ARCH=x64

LABEL maintainer=Roxedus
LABEL dotnet_version=${DOTNET_VER} dotnet_arch=${DOTNET_ARCH}

RUN 
  mkdir -p /usr/share/dotnet 
  && curl -L -s https://dotnetcli.azureedge.net/dotnet/aspnetcore/Runtime/${DOTNET_VER}/aspnetcore-runtime-${DOTNET_VER}-linux-musl-${DOTNET_ARCH}.tar.gz | tar xzf - -C /usr/share/dotnet 
  && ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet 
  && setcap CAP_NET_BIND_SERVICE=+eip /usr/share/dotnet/dotnet 
  && mkdir -p /etc/services.d/

WORKDIR /app
mydocker/app1

FROM mydocker/aspnetcore:apline5.0.6 

ENV DOTNET_DLL=ttt.dll DOTNET_ARG=

RUN mkdir -p /etc/services.d/app1 && 
echo IyEvdXNyL2Jpbi93aXRoLWNvbnRlbnYgYmFzaApjZCAvYXBwIHx8IGV4aXQKCmV4ZWMgXAoJczYtc2V0dWlkZ2lkIHJveCBkb3RuZXQgYXJnMSBhcmcy | base64 -d >/etc/services.d/app1/run && 
sed -i 's/arg1/'"${DOTNET_DLL}"'/g' /etc/services.d/app1/run && 
sed -i 's/arg2/'"${DOTNET_ARG}"'/g' /etc/services.d/app1/run

COPY publish/ /app/

EXPOSE 5000 
mydocker/aspnetcore:mix5.0.6

FROM alpine:3.13

ENV S6_REL=latest S6_ARCH=amd64 TZ=Asia/Shanghai
ENV DOTNET_VER=5.0.6 DOTNET_ARCH=x64

LABEL base.maintainer=Roxedus
LABEL base.s6.rel=${S6_REL} base.s6.arch=${S6_ARCH}
LABEL dotnet_version=${DOTNET_VER} dotnet_arch=${DOTNET_ARCH}

RUN 
	set -eux && 
	sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories && 
	apk add --no-cache 
		curl 
		tar 
		bash 
		ca-certificates 
		coreutils 
		shadow 
		tzdata 
		libstdc++ 
		libgcc 
		icu-libs 
		libintl 
		libcap 
		libssl1.1 
		zlib 
		krb5-libs 
		&& 
	apk add --no-cache libgdiplus --repository https://mirrors.ustc.edu.cn/alpine/edge/testing/ && 
	curl -L -s https://github.com/just-containers/s6-overlay/releases/download/v${S6_REL}/s6-overlay-${S6_ARCH}.tar.gz | tar xzf - -C / &&  
	groupmod -g 1000 users && 
	useradd -u 1000 -U -d /config -s /bin/false rox && 
	usermod -G users rox && 
	mkdir -p 
		/app 
		/config && 
	rm -rf /tmp/* && 
	mkdir -p /etc/cont-init.d && 
	echo IyEvdXNyL2Jpbi93aXRoLWNvbnRlbnYgYmFzaAoKUFVJRD0ke1BVSUQ6LTEwMDB9ClBHSUQ9JHtQR0lEOi0xMDAwfQoKZ3JvdXBtb2QgLW8gLWcgIiRQR0lEIiByb3gKdXNlcm1vZCAtbyAtdSAiJFBVSUQiIHJveAoKZWNobyAiClVzZXIgdWlkOiAgICAkKGlkIC11IHJveCkKVXNlciBnaWQ6ICAgICQoaWQgLWcgcm94KQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiIKCmNob3duIC1SIHJveDpyb3ggL2FwcApjaG93biAtUiByb3g6cm94IC9jb25maWc= | base64 -d >/etc/cont-init.d/1-prep-env

RUN 
  mkdir -p /usr/share/dotnet 
  && curl -L -s https://dotnetcli.azureedge.net/dotnet/aspnetcore/Runtime/${DOTNET_VER}/aspnetcore-runtime-${DOTNET_VER}-linux-musl-${DOTNET_ARCH}.tar.gz | tar xzf - -C /usr/share/dotnet 
  && ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet 
  && setcap CAP_NET_BIND_SERVICE=+eip /usr/share/dotnet/dotnet 
  && mkdir -p /etc/services.d/

RUN mkdir -p /etc/services.d/app1 && 
  echo IyEvdXNyL2Jpbi93aXRoLWNvbnRlbnYgYmFzaAoKRExMPSR7RExMOi19CgpjZCAvYXBwIHx8IGV4aXQKCmV4ZWMgXAoJczYtc2V0dWlkZ2lkIHJveCBkb3RuZXQgJERMTA== | base64 -d >/etc/services.d/app1/run 

VOLUME [ "/config" ]

WORKDIR /app

ENTRYPOINT ["/init"]

EXPOSE 80
原文地址:https://www.cnblogs.com/yzpopulation/p/14702723.html