Dockerfile 编写技巧之加速下载资源
# if you located in China, you can use aliyun mirror to speed up
RUN pip install --no-cache-dir poetry==${POETRY_VERSION} -i https://mirrors.aliyun.com/pypi/simple/
# RUN pip install --no-cache-dir poetry==${POETRY_VERSION}
# if you located in China, you can use aliyun mirror to speed up
RUN sed -i 's@deb.debian.org@mirrors.aliyun.com@g' /etc/apt/sources.list.d/debian.sources
RUN apt-get update \
&& apt-get install -y --no-install-recommends gcc g++ libc-dev libffi-dev libgmp-dev libmpfr-dev libmpc-dev
docker compose build 输出构建命令信息
docker compose build --progress=plain
#9 [api base 5/6] RUN echo "--- debug ---" && ifconfig
#9 0.138 --- debug ---
#9 0.139 eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
#9 0.139 inet 172.17.0.6 netmask 255.255.0.0 broadcast 172.17.255.255
#9 0.139 ether 02:42:ac:11:00:06 txqueuelen 0 (Ethernet)
#9 0.139 RX packets 1 bytes 90 (90.0 B)
#9 0.139 RX errors 0 dropped 0 overruns 0 frame 0
#9 0.139 TX packets 0 bytes 0 (0.0 B)
#9 0.139 TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
#9 0.139
#9 0.139 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
#9 0.139 inet 127.0.0.1 netmask 255.0.0.0
#9 0.139 inet6 ::1 prefixlen 128 scopeid 0x10<host>
#9 0.139 loop txqueuelen 1000 (Local Loopback)
#9 0.139 RX packets 0 bytes 0 (0.0 B)
#9 0.139 RX errors 0 dropped 0 overruns 0 frame 0
#9 0.139 TX packets 0 bytes 0 (0.0 B)
#9 0.139 TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
#9 0.139
#9 DONE 0.1s
Docker 中的默认值设置
在 Docker 中,${VAR:-default}
是一种 Shell 参数扩展语法 ,用于设置环境变量的默认值。它的含义是:
- 如果
VAR
未设置或为空 ,则使用default
值; - 如果
VAR
已设置且非空 ,则直接使用VAR
的值。
用途场景
这个语法常见于 Dockerfile 或容器的启动脚本(如 entrypoint.sh
)中,目的是让容器在运行时更灵活地处理环境变量。例如:
示例 1:Dockerfile 中使用默认值
dockerfile
ENV APP_PORT ${EXTERNAL_PORT:-8080}
- 如果用户启动容器时未通过
-e EXTERNAL_PORT=…
设置变量,则APP_PORT
默认为8080
。