@@ -140,8 +140,11 @@ def create_deployment(
140140 raise
141141
142142
143- DOCKER_IMAGE_NAME = "datacloud-custom-code"
144- DEPENDENCIES_ARCHIVE_NAME = "dependencies.tar.gz"
143+ PLATFORM_ENV_VAR = "DOCKER_DEFAULT_PLATFORM=linux/amd64"
144+ DOCKER_IMAGE_NAME = "datacloud-custom-code-dependency-builder"
145+ DEPENDENCIES_ARCHIVE_NAME = "native_dependencies"
146+ DEPENDENCIES_ARCHIVE_FULL_NAME = f"{ DEPENDENCIES_ARCHIVE_NAME } .tar.gz"
147+ DEPENDENCIES_ARCHIVE_PATH = os .path .join ("payload" , "archives" , DEPENDENCIES_ARCHIVE_FULL_NAME )
145148ZIP_FILE_NAME = "deployment.zip"
146149
147150
@@ -150,31 +153,25 @@ def prepare_dependency_archive(directory: str) -> None:
150153 image_exists = cmd_output (cmd )
151154
152155 if not image_exists :
153- logger .debug ("Building docker image..." )
154- cmd = f"docker build -t { DOCKER_IMAGE_NAME } ."
156+ logger .info ("Building docker image..." )
157+ cmd = f"{ PLATFORM_ENV_VAR } docker build -t { DOCKER_IMAGE_NAME } -f Dockerfile.dependencies ."
155158 cmd_output (cmd )
156159
157160 with tempfile .TemporaryDirectory () as temp_dir :
161+ logger .info ("Building dependencies archive" )
158162 shutil .copy ("requirements.txt" , temp_dir )
163+ shutil .copy ("build_native_dependencies.sh" , temp_dir )
159164 cmd = (
160- f"docker run --rm "
161- f"-v { temp_dir } :/dependencies "
165+ f"{ PLATFORM_ENV_VAR } docker run --rm "
166+ f"-v { temp_dir } :/workspace "
162167 f"{ DOCKER_IMAGE_NAME } "
163- f'/bin/bash -c "cd /dependencies && pip download -r requirements.txt "'
168+ f'/bin/bash -c "./build_native_dependencies.sh "'
164169 )
165170 cmd_output (cmd )
171+ archives_temp_path = os .path .join (temp_dir , DEPENDENCIES_ARCHIVE_FULL_NAME )
172+ shutil .copy (archives_temp_path , DEPENDENCIES_ARCHIVE_PATH )
166173
167- archives_dir = os .path .join (directory , "archives" )
168- os .makedirs (archives_dir , exist_ok = True )
169- archive_file = os .path .join (archives_dir , DEPENDENCIES_ARCHIVE_NAME )
170- with tarfile .open (archive_file , "w:gz" ) as tar :
171- for file in os .listdir (temp_dir ):
172- # Exclude requirements.txt from the archive
173- if file == "requirements.txt" :
174- continue
175- tar .add (os .path .join (temp_dir , file ), arcname = file )
176-
177- logger .debug (f"Dependencies downloaded and archived to { archive_file } " )
174+ logger .info (f"Dependencies archived to { DEPENDENCIES_ARCHIVE_PATH } " )
178175
179176
180177class DeploymentsResponse (BaseModel ):
0 commit comments