-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathDockerfile
More file actions
83 lines (69 loc) · 2.59 KB
/
Dockerfile
File metadata and controls
83 lines (69 loc) · 2.59 KB
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
FROM python:3.11-slim
# Set environment variables
ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1 \
DEBIAN_FRONTEND=noninteractive
# Install system dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
git \
wget \
curl \
unzip \
libsqlite3-dev \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# Create oakvar user and directories
RUN useradd -ms /bin/bash oakvar
WORKDIR /home/oakvar
# Copy the application code
COPY --chown=oakvar:oakvar . /home/oakvar/oakvar
# Define build argument for OakVar version
ARG OAKVAR_VERSION="2.12.10"
# Set up virtual environment and install dependencies
RUN python -m pip install --upgrade pip && \
pip install oakvar==${OAKVAR_VERSION}
# Define build arguments for credentials
ARG OV_EMAIL=""
ARG OV_PW=""
# Set environment variables for OakVar
ENV OV_ROOT_DIR=/home/oakvar/.oakvar \
OV_MODULES_DIR=/home/oakvar/.oakvar/modules \
OV_JOBS_DIR=/home/oakvar/.oakvar/jobs \
OV_LOG_DIR=/home/oakvar/.oakvar/logs \
OV_CONF_DIR=/home/oakvar/.oakvar/conf \
OV_EMAIL=$OV_EMAIL \
OV_PW=$OV_PW
# Switch to oakvar user
USER oakvar
# Set up OakVar system
RUN mkdir -p $OV_ROOT_DIR $OV_MODULES_DIR $OV_JOBS_DIR $OV_LOG_DIR $OV_CONF_DIR && \
if [ -n "$OV_EMAIL" ] && [ -n "$OV_PW" ]; then \
echo "Setting up OakVar with provided credentials..." && \
ov system setup --email $OV_EMAIL --pw $OV_PW && \
echo "OakVar setup complete. Checking if setup was successful..." && \
if grep -q "INVALID_LOGIN_CREDENTIALS" /home/oakvar/.oakvar/logs/oakvar.log 2>/dev/null; then \
echo "ERROR: Authentication failed with provided credentials"; \
exit 1; \
else \
echo "Credentials appear to be accepted"; \
fi \
else \
echo "WARNING: No credentials provided. OakVar may have limited functionality." && \
ov system setup; \
fi
# Install base modules (only if authentication succeeded)
#RUN if [ -n "$OV_EMAIL" ] && [ -n "$OV_PW" ]; then \
# echo "Attempting to install clinvar module..." && \
# ov module install -y clinvar || { \
# echo "WARNING: Failed to install clinvar module. This may be due to authentication issues."; \
# } \
# else \
# echo "Skipping module installation due to missing credentials"; \
# fi
# Expose port for GUI
EXPOSE 8080
# Create a volume for each data directory
VOLUME ["/home/oakvar/.oakvar/modules", "/home/oakvar/.oakvar/jobs", "/home/oakvar/.oakvar/logs", "/home/oakvar/.oakvar/conf"]
# Set entrypoint
CMD ["ov", "--help"]