@@ -126,7 +126,7 @@ pub async fn deploy(opts: DeployOpts<'_>) -> Result<Vec<Uuid>> {
126126
127127 // Setup Rivetkit
128128 let mut _rivet_actor_tempfiles = Vec :: new ( ) ;
129- let mut _rivet_actor_tempdirs = Vec :: new ( ) ;
129+ // let mut _rivet_actor_tempdirs = Vec::new();
130130 if let Some ( rivetkit) = & root. rivetkit {
131131 // Create service token
132132 let service_token =
@@ -174,37 +174,42 @@ pub async fn deploy(opts: DeployOpts<'_>) -> Result<Vec<Uuid>> {
174174 . await ?;
175175
176176 // Determine server runtime
177- let function_build = if rivetkit. build . image . is_some ( )
178- || rivetkit. build . dockerfile . is_some ( )
179- {
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- let dockerfile_tempdir = tempfile:: Builder :: new ( ) . prefix ( "rivet-server-" ) . tempdir ( ) ?;
187- let dockerfile_path = dockerfile_tempdir. path ( ) . join ( "Dockerfile" ) ;
188- let dockerignore_path = dockerfile_tempdir. path ( ) . join ( "Dockerfile.dockerignore" ) ;
189- _rivet_actor_tempdirs. push ( dockerfile_tempdir) ;
190-
191- let server_path = rivetkit. server . clone ( ) ;
192- tokio:: fs:: write (
193- & dockerfile_path,
194- generate_server_dockerfile ( & project_root, server_path) ,
195- )
196- . await ?;
197- tokio:: fs:: write ( & dockerignore_path, generate_server_dockerignore ( ) ) . await ?;
198-
199- toolchain:: config:: build:: docker:: Build {
200- dockerfile : Some ( dockerfile_path. display ( ) . to_string ( ) ) ,
201- build_path : Some ( project_root. display ( ) . to_string ( ) ) ,
202- image : None ,
203- build_target : None ,
204- build_args : None ,
205- unstable : rivetkit. build . unstable . clone ( ) ,
206- }
207- } ;
177+ let function_build =
178+ if rivetkit. build . image . is_some ( ) || rivetkit. build . dockerfile . is_some ( ) {
179+ // Use user-provided Docker config
180+ rivetkit. build . clone ( )
181+ } else {
182+ // Auto-generate server Dockerfile
183+ //
184+ // Has to be in the project path in order to use NPM dependencies
185+ //
186+ // Preserve the paths because we want to be able to let the user to test the Dockerfile
187+ // that's printed out
188+ let dockerfile_tempdir = tempfile:: Builder :: new ( )
189+ . prefix ( "rivet-server-" )
190+ . tempdir ( ) ?
191+ . into_path ( ) ;
192+ let dockerfile_path = dockerfile_tempdir. join ( "Dockerfile" ) ;
193+ let dockerignore_path = dockerfile_tempdir. join ( "Dockerfile.dockerignore" ) ;
194+ // _rivet_actor_tempdirs.push(dockerfile_tempdir);
195+
196+ let server_path = rivetkit. server . clone ( ) ;
197+ tokio:: fs:: write (
198+ & dockerfile_path,
199+ generate_server_dockerfile ( & project_root, server_path) ,
200+ )
201+ . await ?;
202+ tokio:: fs:: write ( & dockerignore_path, generate_server_dockerignore ( ) ) . await ?;
203+
204+ toolchain:: config:: build:: docker:: Build {
205+ dockerfile : Some ( dockerfile_path. display ( ) . to_string ( ) ) ,
206+ build_path : Some ( project_root. display ( ) . to_string ( ) ) ,
207+ image : None ,
208+ build_target : None ,
209+ build_args : None ,
210+ unstable : rivetkit. build . unstable . clone ( ) ,
211+ }
212+ } ;
208213
209214 // Add function
210215 root. functions . insert (
@@ -714,8 +719,6 @@ fn generate_dockerfile_for_package_manager(
714719 package_manager : & PackageManager ,
715720 server_path_js : & str ,
716721) -> String {
717- let copy_files = package_manager. copy_files . join ( " " ) ;
718-
719722 // Determine package manager specific configurations
720723 let ( base_image, setup_commands, build_cmd, runtime_cmd, add_deps_cmd) = match package_manager. name . as_str ( ) {
721724 "yarn" => (
@@ -730,7 +733,7 @@ fn generate_dockerfile_for_package_manager(
730733 "" ,
731734 "bunx tsc --outDir dist/ --rootDir ./" ,
732735 "bun run" ,
733- "bun add @hono/node-server @hono/node-ws "
736+ "echo noop "
734737 ) ,
735738 "pnpm" => (
736739 "node:22-alpine" ,
@@ -751,6 +754,7 @@ fn generate_dockerfile_for_package_manager(
751754 let mut dockerfile = String :: new ( ) ;
752755
753756 // Builder stage
757+ let copy_files = package_manager. copy_files . join ( " " ) ;
754758 dockerfile. push_str ( & format ! ( "FROM {} AS builder\n \n " , base_image) ) ;
755759 dockerfile. push_str ( "WORKDIR /app\n \n " ) ;
756760 dockerfile. push_str ( & format ! ( "# Copy package files\n COPY {} ./\n \n " , copy_files) ) ;
@@ -791,9 +795,14 @@ fn generate_dockerfile_for_package_manager(
791795 dockerfile. push_str ( "\n \n " ) ;
792796 }
793797
798+ let app_copy_files = package_manager
799+ . copy_files
800+ . iter ( )
801+ . map ( |x| format ! ( "/app/{x}" ) )
802+ . collect :: < Vec < _ > > ( )
803+ . join ( " " ) ;
794804 dockerfile. push_str ( & format ! (
795- "COPY --from=builder --chown=rivet:rivet /app/{} ./\n \n " ,
796- copy_files
805+ "COPY --from=builder --chown=rivet:rivet {app_copy_files} ./\n \n "
797806 ) ) ;
798807
799808 // Install production dependencies
0 commit comments