在同一个项目中,我在 MacBook Pro(13 英寸,M1,2020)上构建的 Docker 镜像为 1.56GB,而在 GitHub Actions 上构建的镜像为 11.7GB。即使我使用相同的 Dockerfile,为什么会有这样的差异?
FROM python:3.11-slim AS builder
WORKDIR /app
RUN pip install poetry
COPY pyproject.toml poetry.lock /app/
RUN poetry config virtualenvs.create false \
&& poetry install --no-dev --no-interaction --no-ansi COPY . /app
CMD ["python3", "main.py" ]
工作流程:
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Log in to GitHub Container Registry
run: echo "${{ secrets.MY_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin
- name: Build Docker image
run: docker build -t ghcr.io/${{ github.repository_owner }}/${{ github.repository }}/${{env.IMAGE_NAME}}:latest .
- name: show image size
run: docker images
- name: Push Docker image to GHCR
run: docker push ghcr.io/${{ github.repository_owner }}/${{ github.repository }}/${{env.IMAGE_NAME}}:latest
我无法直接回答这个问题,但我确实知道一个非常有用的工具可以解决这个问题。
https://github.com/wagoodman/dive
Dive 允许您检查 docker 镜像的每一层。这应该可以让您知道两者之间的差异来自何处,并希望如何避免它。