Problem: When running the start_server.sh script in a Docker container, the following errors occurred: - : not foundserver.sh: 18: (and other lines) - /app/start_server.sh: 35: Syntax error: "elif" unexpected (expecting "then") Root cause: The script file was using Windows-style line endings (CRLF) instead of Unix/Linux-style line endings (LF), which caused syntax errors when executed in a Linux environment. Solution: 1. Ensure start_server.sh file uses proper Unix line endings (LF) 2. Add dos2unix command in Dockerfile to convert line ending format of the script file 3. Automatically fix line ending issues during image build to ensure proper script execution in containers This fixes the issue with starting Doris MCP Server in Linux-based Docker containers.
68 lines
1.9 KiB
Docker
68 lines
1.9 KiB
Docker
# Licensed to the Apache Software Foundation (ASF) under one
|
|
# or more contributor license agreements. See the NOTICE file
|
|
# distributed with this work for additional information
|
|
# regarding copyright ownership. The ASF licenses this file
|
|
# to you under the Apache License, Version 2.0 (the
|
|
# "License"); you may not use this file except in compliance
|
|
# with the License. You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing,
|
|
# software distributed under the License is distributed on an
|
|
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
# KIND, either express or implied. See the License for the
|
|
# specific language governing permissions and limitations
|
|
# under the License.
|
|
# Use Python 3.12 as base image
|
|
FROM python:3.12-slim
|
|
|
|
# Set working directory
|
|
WORKDIR /app
|
|
|
|
# Set environment variables
|
|
ENV PYTHONPATH=/app
|
|
ENV PYTHONUNBUFFERED=1
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
|
|
# Install system dependencies
|
|
RUN apt-get update && apt-get install -y \
|
|
curl \
|
|
gcc \
|
|
g++ \
|
|
pkg-config \
|
|
default-libmysqlclient-dev \
|
|
dos2unix \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Copy requirements file
|
|
COPY requirements.txt .
|
|
|
|
# Install Python dependencies
|
|
RUN pip install --no-cache-dir -r requirements.txt
|
|
|
|
# Copy application code
|
|
COPY . .
|
|
|
|
# Convert line endings for shell scripts and ensure proper execution format
|
|
RUN find . -name "*.sh" -exec dos2unix {} \; && \
|
|
find . -name "*.sh" -exec chmod +x {} \;
|
|
|
|
# Create necessary directories
|
|
RUN mkdir -p /app/logs /app/config /app/data
|
|
|
|
# Create non-root user
|
|
RUN groupadd -r doris && useradd -r -g doris doris
|
|
RUN chown -R doris:doris /app
|
|
USER doris
|
|
|
|
# Health check
|
|
HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \
|
|
CMD curl -f http://localhost:3000/health || exit 1
|
|
|
|
# Expose ports
|
|
EXPOSE 3000 3001 3002
|
|
|
|
# Start command
|
|
CMD ["/app/start_server.sh"]
|