-
Notifications
You must be signed in to change notification settings - Fork 12
Expand file tree
/
Copy pathAGENTS.codex.Dockerfile
More file actions
155 lines (152 loc) · 5.81 KB
/
Copy pathAGENTS.codex.Dockerfile
File metadata and controls
155 lines (152 loc) · 5.81 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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
FROM ubuntu:24.04
ENV DEBIAN_FRONTEND=noninteractive
ENV PYTHONUNBUFFERED=1
RUN apt update && apt install -y curl ca-certificates git &&\
install -m 0755 -d /etc/apt/keyrings &&\
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc &&\
chmod a+r /etc/apt/keyrings/docker.asc &&\
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" > /etc/apt/sources.list.d/docker.list &&\
apt update && apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
RUN useradd -m -s /bin/bash agent
RUN apt-get update &&\
apt-get install -y --no-install-recommends \
binutils \
sudo \
build-essential \
bzr \
curl \
default-libmysqlclient-dev \
dnsutils \
gettext \
git \
git-lfs \
gnupg2 \
inotify-tools \
iputils-ping \
jq \
libbz2-dev \
libc6 \
libc6-dev \
libcurl4-openssl-dev \
libdb-dev \
libedit2 \
libffi-dev \
libgcc-13-dev \
libgcc1 \
libgdbm-compat-dev \
libgdbm-dev \
libgdiplus \
libgssapi-krb5-2 \
liblzma-dev \
libncurses-dev \
libncursesw5-dev \
libnss3-dev \
libpq-dev \
libpsl-dev \
libpython3-dev \
libreadline-dev \
libsqlite3-dev \
libssl-dev \
libstdc++-13-dev \
libunwind8 \
libuuid1 \
libxml2-dev \
libz3-dev \
make \
moreutils \
netcat-openbsd \
openssh-client \
pkg-config \
protobuf-compiler \
python3-pip \
ripgrep \
rsync \
software-properties-common \
sqlite3 \
swig3.0 \
tk-dev \
tzdata \
unixodbc-dev \
unzip \
uuid-dev \
xz-utils \
zip \
zlib1g \
zlib1g-dev
RUN echo 'agent ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/agent &&\
chmod 440 /etc/sudoers.d/agent
USER agent
WORKDIR /home/agent
RUN curl -LsSf https://astral.sh/uv/install.sh | sh
ARG NVM_VERSION=0.40.3
ARG NODE_VERSION=22
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v${NVM_VERSION}/install.sh | bash
RUN echo 'export PATH="/home/agent/.local/bin:$PATH"' > .bash_env &&\
echo '. /home/agent/.local/bin/env' >> .bash_env &&\
echo 'export NVM_DIR=/home/agent/.nvm' >> .bash_env &&\
echo '. /home/agent/.nvm/nvm.sh' >> .bash_env &&\
echo '. /home/agent/.nvm/bash_completion' >> .bash_env &&\
echo ". /home/agent/.bash_env" >> /home/agent/.bashrc
ENV BASH_ENV=/home/agent/.bash_env
ARG PYTHON_VERSION=3.8
RUN . $BASH_ENV && uv python install ${PYTHON_VERSION}
# Setup the pipelines project
RUN git clone https://github.com/hasadna/open-bus-pipelines.git
WORKDIR /home/agent/open-bus-pipelines
# General dependency requirements
RUN sudo apt update && sudo apt install -y libpq-dev build-essential
# install airflow venv
RUN . $BASH_ENV && uv sync &&\
uv pip install --upgrade pip &&\
. .venv/bin/activate &&\
bin/pip_install_airflow.sh &&\
pip install -e . &&\
pip install -r tests/requirements.txt
# install stride venv
RUN . $BASH_ENV && uv venv .venv/stride &&\
uv pip install --upgrade pip --no-config --python .venv/stride/bin/python
# Clone related projects
RUN for PROJ in open-bus-siri-etl open-bus-siri-requester open-bus-stride-db; do \
if [ -d "../${PROJ}" ]; then \
echo "Directory ../${PROJ} already exists" &&\
exit 1 ;\
else \
git clone "https://github.com/hasadna/${PROJ}.git" "../${PROJ}" ;\
fi ;\
done
# Install open-bus-siri-etl according to it's README
RUN . $BASH_ENV && . .venv/stride/bin/activate &&\
sudo apt update && sudo apt install -y brotli &&\
cd ../open-bus-siri-etl &&\
pip install -r requirements-dev.txt &&\
echo 'export SQLALCHEMY_URL=postgresql://postgres:123456@localhost' > .env &&\
echo 'export DEBUG=yes' >> .env
# Install other related projects
RUN . $BASH_ENV && . .venv/stride/bin/activate &&\
for PROJ in open-bus-stride-etl open-bus-gtfs-etl; do \
git clone "https://github.com/hasadna/${PROJ}.git" "../${PROJ}" &&\
cd "../${PROJ}" &&\
pip install -r requirements.txt &&\
pip install -e . ;\
done
# Airflow Initialization
RUN echo ". .venv/bin/activate" > .airflow.env &&\
echo "export AIRFLOW_HOME=$(pwd)/.airflow" >> .airflow.env &&\
echo "export AIRFLOW__CORE__DAGS_FOLDER=$(pwd)/dags" >> .airflow.env &&\
echo "export AIRFLOW__CORE__LOAD_EXAMPLES=False" >> .airflow.env &&\
echo "export AIRFLOW__CORE__LOAD_DEFAULT_CONNECTIONS=False" >> .airflow.env &&\
echo "export AIRFLOW__CORE__DAG_DISCOVERY_SAFE_MODE=False" >> .airflow.env &&\
echo "export OPEN_BUS_PIPELINES_DOWNLOAD_SIRI_SNAPSHOTS=yes" >> .airflow.env &&\
echo "export OPEN_BUS_PIPELINES_PIP_INSTALL_DEPS=no" >> .airflow.env &&\
echo "export OPEN_BUS_SIRI_STORAGE_ROOTPATH=$(pwd)/.data/siri" >> .airflow.env &&\
echo "export SQLALCHEMY_URL=postgresql://postgres:123456@localhost" >> .airflow.env &&\
echo "export DEBUG=yes" >> .airflow.env &&\
. $BASH_ENV && . ./.airflow.env &&\
airflow db init &&\
airflow users create --username admin --firstname Admin --lastname Adminski --role Admin --password 12345678 --email admin@localhost
USER root
RUN rm /etc/sudoers.d/agent
USER agent
RUN . $BASH_ENV && npm install -g @openai/codex
ENTRYPOINT ["codex"]