Docker
Docker
好 👍 我帮你写一个改进版 Dockerfile,保证无论 Gemfile.lock
在不在,都能正常构建:
📄 Dockerfile(改进版)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 使用 Ruby 3.3 最新版作为基础镜像
FROM ruby:3.3
# 设置工作目录
WORKDIR /srv/jekyll
# 安装构建依赖
RUN apt-get update && apt-get install -y \
build-essential \
libffi-dev \
libyaml-dev \
zlib1g-dev \
git \
&& rm -rf /var/lib/apt/lists/*
# 安装 bundler
RUN gem install bundler
# 先复制 Gemfile 和(可选的)Gemfile.lock
COPY Gemfile ./
COPY Gemfile.lock* ./
# 安装依赖
RUN bundle install
# 复制站点内容
COPY . .
# 默认启动 Jekyll 服务
EXPOSE 4000
CMD ["bundle", "exec", "jekyll", "serve", "--host", "0.0.0.0", "--port", "4000", "--livereload"]
📄 docker-compose.yml(保持不变)
1
2
3
4
5
6
7
8
9
10
11
version: "3.9"
services:
jekyll:
build: .
container_name: jekyll
ports:
- "4008:4000"
volumes:
- .:/srv/jekyll
command: bundle exec jekyll serve --host 0.0.0.0 --port 4000 --livereload
🚀 构建 & 启动
1
2
docker compose build --no-cache
docker compose up
这样:
- 如果
Gemfile.lock
存在,就会用里面固定的依赖。 - 如果不存在,Bundler 会自动生成新的。
要不要我顺便帮你把 Gemfile
也精简/优化一下,保证和 Chirpy 主题完全兼容?
本文由作者按照
CC BY 4.0
进行授权