-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathDockerfile.base
More file actions
136 lines (116 loc) · 4.69 KB
/
Dockerfile.base
File metadata and controls
136 lines (116 loc) · 4.69 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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# ============================================
# Demasy Labs - Oracle Sandbox Base Image
# ============================================
#
# PURPOSE: Publishable base image WITHOUT Oracle components
# LICENSE: MIT (source code and scripts only)
#
# This base image includes:
# ✅ Node.js environment
# ✅ System dependencies
# ✅ Management scripts and utilities
# ✅ Project structure
#
# NOT included (due to Oracle licensing):
# ❌ Oracle Instant Client
# ❌ SQLcl
# ❌ APEX
# ❌ ORDS
# ❌ SQL*Plus
#
# Users must extend this image and add Oracle components themselves
# See ORACLE_LICENSE_NOTICE.md for instructions
# ============================================
FROM node:20-bookworm-slim
LABEL maintainer="Ahmed El-Demasy <founder@demasy.io>"
LABEL org.opencontainers.image.title="Oracle Sandbox Base"
LABEL org.opencontainers.image.description="Base image for Oracle 26ai development environment (Oracle components not included)"
LABEL org.opencontainers.image.vendor="Demasy Labs"
LABEL org.opencontainers.image.licenses="MIT"
LABEL org.opencontainers.image.source="https://github.com/demasy/oracle-sandbox"
LABEL org.opencontainers.image.documentation="https://github.com/demasy/oracle-sandbox/blob/main/README.md"
# Install system dependencies
RUN apt-get update && \
apt-get upgrade -y && \
apt-get install -y --no-install-recommends \
curl \
unzip \
libaio1 \
ca-certificates \
bash \
iputils-ping \
vim \
nano \
lsof \
telnet \
tcpdump \
net-tools \
htop \
jq \
openssl \
git && \
npm install -g nodemon && \
rm -rf /var/lib/apt/lists/*
# Create application directories
RUN mkdir -p /usr/demasy/app \
/usr/demasy/scripts/backbone/utils \
/usr/demasy/scripts/cli \
/usr/demasy/scripts/oracle/admin \
/usr/demasy/scripts/oracle/mcp \
/usr/demasy/scripts/oracle/apex \
/opt/oracle/instantclient \
/opt/oracle/apex \
/opt/oracle/ords
# Copy application files
WORKDIR /usr/demasy/app
COPY package*.json ./
COPY ./app.js ./app.js
COPY ["LICENSE", "./"]
# Copy utility scripts
COPY ./src/scripts/backbone/utils/*.sh /usr/demasy/scripts/backbone/utils/
COPY ./src/scripts/cli/*.sh /usr/demasy/scripts/cli/
COPY ./src/scripts/oracle/admin/*.sh /usr/demasy/scripts/oracle/admin/
COPY ./src/scripts/oracle/mcp/*.sh /usr/demasy/scripts/oracle/mcp/
COPY ./src/scripts/oracle/apex/*.sh /usr/demasy/scripts/oracle/apex/
# Set permissions
RUN chmod +x /usr/demasy/scripts/backbone/utils/*.sh && \
chmod +x /usr/demasy/scripts/cli/*.sh && \
chmod +x /usr/demasy/scripts/oracle/admin/*.sh && \
chmod +x /usr/demasy/scripts/oracle/mcp/*.sh && \
chmod +x /usr/demasy/scripts/oracle/apex/*.sh
# Symbolic links to Oracle tools and scripts
RUN ln -s /usr/demasy/scripts/oracle/admin/download.sh /usr/local/bin/download-oracle-components
# -------------------------------------------- [CLI Tools]
RUN ln -s /usr/demasy/scripts/cli/sqlplus-connect.sh /usr/local/bin/sqlplus
RUN ln -s /usr/demasy/scripts/cli/sqlcl-connect.sh /usr/local/bin/sqlcl
RUN ln -s /usr/demasy/scripts/cli/sqlcl-connect.sh /usr/local/bin/oracle
# -------------------------------------------- [Oracle APEX Tools]
RUN ln -s /usr/demasy/scripts/oracle/admin/download-apex.sh /usr/local/bin/download-apex
RUN ln -s /usr/demasy/scripts/oracle/apex/install.sh /usr/local/bin/install-apex
RUN ln -s /usr/demasy/scripts/oracle/apex/uninstall.sh /usr/local/bin/uninstall-apex
RUN ln -s /usr/demasy/scripts/oracle/apex/start.sh /usr/local/bin/start-apex
RUN ln -s /usr/demasy/scripts/oracle/apex/stop.sh /usr/local/bin/stop-apex
# -------------------------------------------- [Software Install Tools]
RUN ln -s /usr/demasy/scripts/oracle/admin/install-all.sh /usr/local/bin/install-all
RUN ln -s /usr/demasy/scripts/oracle/admin/install-client.sh /usr/local/bin/install-client
RUN ln -s /usr/demasy/scripts/oracle/admin/install-sqlplus.sh /usr/local/bin/install-sqlplus
RUN ln -s /usr/demasy/scripts/oracle/admin/install-sqlcl.sh /usr/local/bin/install-sqlcl
# -------------------------------------------- [Admin & Diagnostics]
RUN ln -s /usr/demasy/scripts/oracle/admin/healthcheck.sh /usr/local/bin/healthcheck
# Install Node.js dependencies
RUN npm ci --only=production && npm cache clean --force
# Environment variables for database connectivity
ENV DEMASYLABS_DB_HOST=oracle-al-database-26ai \
DEMASYLABS_DB_PORT=1521 \
DEMASYLABS_DB_SERVICE=FREEPDB1 \
DEMASYLABS_DB_USER=system \
DEMASYLABS_ORDS_PORT=8080 \
NODE_ENV=production
# Expose ports
EXPOSE 3000 3001 8080
# Health check
HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \
CMD curl -f http://localhost:3000/health || exit 1
WORKDIR /usr/demasy/app
# Start the management server
CMD ["node", "app.js"]