@@ -127,7 +127,7 @@ pub async fn deploy(opts: DeployOpts<'_>) -> Result<Vec<Uuid>> {
127127
128128 // Setup Rivetkit
129129 let mut _rivet_actor_tempfiles = Vec :: new ( ) ;
130- let mut _rivet_actor_tempdirs = Vec :: new ( ) ;
130+ // let mut _rivet_actor_tempdirs = Vec::new();
131131 if let Some ( rivetkit) = & root. rivetkit {
132132 // Create service token
133133 let service_token =
@@ -175,37 +175,42 @@ pub async fn deploy(opts: DeployOpts<'_>) -> Result<Vec<Uuid>> {
175175 . await ?;
176176
177177 // Determine server runtime
178- let function_build = if rivetkit. build . image . is_some ( )
179- || rivetkit. build . dockerfile . is_some ( )
180- {
181- // Use user-provided Docker config
182- rivetkit. build . clone ( )
183- } else {
184- // Auto-generate server Dockerfile
185- //
186- // Has to be in the project path in order to use NPM dependencies
187- let dockerfile_tempdir = tempfile:: Builder :: new ( ) . prefix ( "rivet-server-" ) . tempdir ( ) ?;
188- let dockerfile_path = dockerfile_tempdir. path ( ) . join ( "Dockerfile" ) ;
189- let dockerignore_path = dockerfile_tempdir. path ( ) . join ( "Dockerfile.dockerignore" ) ;
190- _rivet_actor_tempdirs. push ( dockerfile_tempdir) ;
191-
192- let server_path = rivetkit. server . clone ( ) ;
193- tokio:: fs:: write (
194- & dockerfile_path,
195- generate_server_dockerfile ( & project_root, server_path) ,
196- )
197- . await ?;
198- tokio:: fs:: write ( & dockerignore_path, generate_server_dockerignore ( ) ) . await ?;
199-
200- toolchain:: config:: build:: docker:: Build {
201- dockerfile : Some ( dockerfile_path. display ( ) . to_string ( ) ) ,
202- build_path : Some ( project_root. display ( ) . to_string ( ) ) ,
203- image : None ,
204- build_target : None ,
205- build_args : None ,
206- unstable : rivetkit. build . unstable . clone ( ) ,
207- }
208- } ;
178+ let function_build =
179+ if rivetkit. build . image . is_some ( ) || rivetkit. build . dockerfile . is_some ( ) {
180+ // Use user-provided Docker config
181+ rivetkit. build . clone ( )
182+ } else {
183+ // Auto-generate server Dockerfile
184+ //
185+ // Has to be in the project path in order to use NPM dependencies
186+ //
187+ // Preserve the paths because we want to be able to let the user to test the Dockerfile
188+ // that's printed out
189+ let dockerfile_tempdir = tempfile:: Builder :: new ( )
190+ . prefix ( "rivet-server-" )
191+ . tempdir ( ) ?
192+ . into_path ( ) ;
193+ let dockerfile_path = dockerfile_tempdir. join ( "Dockerfile" ) ;
194+ let dockerignore_path = dockerfile_tempdir. join ( "Dockerfile.dockerignore" ) ;
195+ // _rivet_actor_tempdirs.push(dockerfile_tempdir);
196+
197+ let server_path = rivetkit. server . clone ( ) ;
198+ tokio:: fs:: write (
199+ & dockerfile_path,
200+ generate_server_dockerfile ( & project_root, server_path) ,
201+ )
202+ . await ?;
203+ tokio:: fs:: write ( & dockerignore_path, generate_server_dockerignore ( ) ) . await ?;
204+
205+ toolchain:: config:: build:: docker:: Build {
206+ dockerfile : Some ( dockerfile_path. display ( ) . to_string ( ) ) ,
207+ build_path : Some ( project_root. display ( ) . to_string ( ) ) ,
208+ image : None ,
209+ build_target : None ,
210+ build_args : None ,
211+ unstable : rivetkit. build . unstable . clone ( ) ,
212+ }
213+ } ;
209214
210215 // Add function
211216 root. functions . insert (
@@ -716,8 +721,6 @@ fn generate_dockerfile_for_package_manager(
716721 package_manager : & PackageManager ,
717722 server_path_js : & str ,
718723) -> String {
719- let copy_files = package_manager. copy_files . join ( " " ) ;
720-
721724 // Determine package manager specific configurations
722725 let ( base_image, setup_commands, build_cmd, runtime_cmd, add_deps_cmd) = match package_manager. name . as_str ( ) {
723726 "yarn" => (
@@ -732,7 +735,7 @@ fn generate_dockerfile_for_package_manager(
732735 "" ,
733736 "bunx tsc --outDir dist/ --rootDir ./" ,
734737 "bun run" ,
735- "bun add @hono/node-server @hono/node-ws "
738+ "echo noop "
736739 ) ,
737740 "pnpm" => (
738741 "node:22-alpine" ,
@@ -753,6 +756,7 @@ fn generate_dockerfile_for_package_manager(
753756 let mut dockerfile = String :: new ( ) ;
754757
755758 // Builder stage
759+ let copy_files = package_manager. copy_files . join ( " " ) ;
756760 dockerfile. push_str ( & format ! ( "FROM {} AS builder\n \n " , base_image) ) ;
757761 dockerfile. push_str ( "WORKDIR /app\n \n " ) ;
758762 dockerfile. push_str ( & format ! ( "# Copy package files\n COPY {} ./\n \n " , copy_files) ) ;
@@ -793,9 +797,14 @@ fn generate_dockerfile_for_package_manager(
793797 dockerfile. push_str ( "\n \n " ) ;
794798 }
795799
800+ let app_copy_files = package_manager
801+ . copy_files
802+ . iter ( )
803+ . map ( |x| format ! ( "/app/{x}" ) )
804+ . collect :: < Vec < _ > > ( )
805+ . join ( " " ) ;
796806 dockerfile. push_str ( & format ! (
797- "COPY --from=builder --chown=rivet:rivet /app/{} ./\n \n " ,
798- copy_files
807+ "COPY --from=builder --chown=rivet:rivet {app_copy_files} ./\n \n "
799808 ) ) ;
800809
801810 // Install production dependencies
0 commit comments