@@ -126,7 +126,7 @@ pub async fn deploy(opts: DeployOpts<'_>) -> Result<Vec<Uuid>> {
126
126
127
127
// Setup Rivetkit
128
128
let mut _rivet_actor_tempfiles = Vec :: new ( ) ;
129
- let mut _rivet_actor_tempdirs = Vec :: new ( ) ;
129
+ // let mut _rivet_actor_tempdirs = Vec::new();
130
130
if let Some ( rivetkit) = & root. rivetkit {
131
131
// Create service token
132
132
let service_token =
@@ -174,37 +174,42 @@ pub async fn deploy(opts: DeployOpts<'_>) -> Result<Vec<Uuid>> {
174
174
. await ?;
175
175
176
176
// 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
+ } ;
208
213
209
214
// Add function
210
215
root. functions . insert (
@@ -714,8 +719,6 @@ fn generate_dockerfile_for_package_manager(
714
719
package_manager : & PackageManager ,
715
720
server_path_js : & str ,
716
721
) -> String {
717
- let copy_files = package_manager. copy_files . join ( " " ) ;
718
-
719
722
// Determine package manager specific configurations
720
723
let ( base_image, setup_commands, build_cmd, runtime_cmd, add_deps_cmd) = match package_manager. name . as_str ( ) {
721
724
"yarn" => (
@@ -730,7 +733,7 @@ fn generate_dockerfile_for_package_manager(
730
733
"" ,
731
734
"bunx tsc --outDir dist/ --rootDir ./" ,
732
735
"bun run" ,
733
- "bun add @hono/node-server @hono/node-ws "
736
+ "echo noop "
734
737
) ,
735
738
"pnpm" => (
736
739
"node:22-alpine" ,
@@ -751,6 +754,7 @@ fn generate_dockerfile_for_package_manager(
751
754
let mut dockerfile = String :: new ( ) ;
752
755
753
756
// Builder stage
757
+ let copy_files = package_manager. copy_files . join ( " " ) ;
754
758
dockerfile. push_str ( & format ! ( "FROM {} AS builder\n \n " , base_image) ) ;
755
759
dockerfile. push_str ( "WORKDIR /app\n \n " ) ;
756
760
dockerfile. push_str ( & format ! ( "# Copy package files\n COPY {} ./\n \n " , copy_files) ) ;
@@ -791,9 +795,14 @@ fn generate_dockerfile_for_package_manager(
791
795
dockerfile. push_str ( "\n \n " ) ;
792
796
}
793
797
798
+ let app_copy_files = package_manager
799
+ . copy_files
800
+ . iter ( )
801
+ . map ( |x| format ! ( "/app/{x}" ) )
802
+ . collect :: < Vec < _ > > ( )
803
+ . join ( " " ) ;
794
804
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 "
797
806
) ) ;
798
807
799
808
// Install production dependencies
0 commit comments