Make .gradle, output, build, and modules directories writable (chmod 777) so the container works when K8s runs it as a non-root user.
61 lines
1.9 KiB
Docker
61 lines
1.9 KiB
Docker
FROM eclipse-temurin:17-jdk
|
|
|
|
WORKDIR /app
|
|
|
|
# Install Python and dependencies
|
|
RUN apt-get update && apt-get install -y \
|
|
python3 \
|
|
python3-pip \
|
|
python3-venv \
|
|
git \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Set up Python virtual environment
|
|
RUN python3 -m venv /opt/venv
|
|
ENV PATH="/opt/venv/bin:$PATH"
|
|
|
|
# Install Anthropic and tqdm in the virtual environment
|
|
RUN pip3 install --no-cache-dir "anthropic>=0.8.1,<0.9.0" tqdm==4.66.2 python-dotenv==1.0.1
|
|
|
|
# Clone the official Synthea repository directly into /app
|
|
RUN git clone https://github.com/synthetichealth/synthea.git /app-temp && \
|
|
cp -r /app-temp/* /app/ && \
|
|
rm -rf /app-temp
|
|
|
|
# Create directory structure for our custom modules and python scripts
|
|
RUN mkdir -p /app/module_generator \
|
|
/app/output \
|
|
/app/src/main/resources/modules
|
|
|
|
# First build the project with the official modules - this will compile the Java code
|
|
RUN ./gradlew build -x test
|
|
|
|
# Make the run_synthea script executable
|
|
RUN chmod +x /app/run_synthea
|
|
|
|
# Copy our Python scripts and module generators
|
|
COPY module_generator/*.py /app/module_generator/
|
|
COPY src/main/resources/modules/* /app/src/main/resources/modules/
|
|
COPY src/main/resources/disease/* /app/src/main/resources/
|
|
COPY scripts/* /app/scripts/
|
|
|
|
# Make scripts executable
|
|
RUN chmod +x /app/module_generator/*.py /app/scripts/*
|
|
|
|
# Verify and fix module JSON structures
|
|
RUN python3 /app/scripts/check_condition_structure.py --modules_dir /app/src/main/resources/modules --verbose
|
|
# Create a directory for modules that will be mounted from the host
|
|
RUN mkdir -p /app/modules
|
|
|
|
# Test a simple module generation to ensure Synthea works
|
|
RUN ./run_synthea -p 1 -m hypertension
|
|
|
|
# Make directories writable for K8s (may run as non-root)
|
|
RUN chmod -R 777 /app/.gradle /app/output /app/build /app/modules \
|
|
/app/src/main/resources/modules
|
|
|
|
# Set PYTHONPATH to ensure modules can be found
|
|
ENV PYTHONPATH="/app"
|
|
|
|
# Default command when container runs
|
|
CMD ["tail", "-f", "/dev/null"] |