Skip to content

Commit fc4a507

Browse files
committed
Fix Dockerfile: handle assets:precompile failure gracefully
- Skip assets precompile during build if it fails - Add .precompile_pending marker file - Update entrypoint.sh to check and compile assets at runtime - Assets will be compiled after database is ready
1 parent 9075089 commit fc4a507

2 files changed

Lines changed: 15 additions & 5 deletions

File tree

Dockerfile

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,12 @@ COPY . .
102102
RUN bundle config set --local deployment 'true' && \
103103
bundle config set --local without 'development test'
104104

105-
# 编译前端资源
106-
RUN bundle exec rake assets:precompile
105+
# 编译前端资源(跳过需要数据库的初始化)
106+
ENV DISABLE_DATABASE_ENVIRONMENT_CHECK=1
107+
RUN bundle exec rake assets:precompile 2>/dev/null || \
108+
(echo "Assets precompile skipped - will run at runtime" && \
109+
mkdir -p public/assets && \
110+
touch public/assets/.precompile_pending)
107111

108112
# =============================================================================
109113
# 生产环境阶段

docker/entrypoint.sh

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,15 @@ init_database() {
6161
# 编译前端资源
6262
precompile_assets() {
6363
if [ "$RAILS_ENV" = "production" ]; then
64-
log_info "Precompiling assets..."
65-
bundle exec rake assets:precompile
66-
log_info "Asset precompilation complete!"
64+
# 检查是否需要编译资源
65+
if [ -f "public/assets/.precompile_pending" ] || [ ! -d "public/assets" ] || [ -z "$(ls -A public/assets 2>/dev/null)" ]; then
66+
log_info "Precompiling assets..."
67+
bundle exec rake assets:precompile
68+
rm -f public/assets/.precompile_pending
69+
log_info "Asset precompilation complete!"
70+
else
71+
log_info "Assets already precompiled, skipping..."
72+
fi
6773
fi
6874
}
6975

0 commit comments

Comments
 (0)