overwrite files during deploy
Is it possible to overwrite a file(files) during deployment?
i.e. based on env variable I would like to replace some files in /public folder.
/images/
/public/
/src/
package.json
etc.
"build": "node copyfiles.js && next build",
copyfiles.js:
it does not produce any error but files are not copied. locally it works.
maybe files are read only?
Solution:Jump to solution
you may be interested in writing a custom Dockerfile for your app, it will give you much more control over the build process
12 Replies
Project ID:
2af97fce-ba10-44a9-aedb-a643afb83aec
2af97fce-ba10-44a9-aedb-a643afb83aec
it seems it did not work with shell command either :/
cp -r images/$NEXT_PUBLIC_THEME/ public/images
ok, files are copied but after deploy they are still old.
I have no idea why...
in the build script I added a command to check the content of destination file
it prints the new content.
but after deploy mysite.com/manifest.json - it is still old
one more file I create dynamically (adding .env variables for firebase auth)
the file is created and auth works somehow. but when I access it via web mysite.com/process-env.js - there is still original content.
is anybody there?
Hi....
I gave up.. it seems something happens behind the scene with files
cp -f images/favicon.ico public/favicon.ico (public/favicon.ico exists and overwritten)
cp -f images/favicon.ico public/favicon2.ico (public/favicon2.ico did not exist and copied) next build after the deploy on the web favicon.ico file is still old π¦
cp -f images/favicon.ico public/favicon2.ico (public/favicon2.ico did not exist and copied) next build after the deploy on the web favicon.ico file is still old π¦
hello, nothing is happening behind the scenes, this is something simple like you are copying files to / from the wrong location
Okay
I created another project, just for testing. feel free to change there anything.
e7bf8c87-4233-41c5-bb0c-1eeccb2be302
story:
1. public/ folder contains 4 colorful png file
2. theme/ folder contains black png file
3. we use cutom build command: or
4. locally all squares are black. on railway they remain colourful.
5. theme.sh:
in logs I see that files are copied and are equal
on the web they are not https://all-in-black.up.railway.app/
π
huh. on vercel they are black https://all-in-black.vercel.app/
railway does not do any web caching, we simply run your app as-is
I do not see what exactly happening on railway, but in your logs
before build
#11 [stage-0 7/10] COPY . /app/. //raylway command
#12 [stage-0 8/10] RUN --mount=type=cache,id=s/b5ec3316-27dc-4e02-8b03-6218db5405fe-next/cache,target=/app/.next/cache --mount=type=cache,id=s/b5ec3316-27dc-4e02-8b03-6218db5405fe-node_modules/cache,target=/app/node_modules/.cache ./theme.sh && yarn build
then copiing and build is going..
after build
#14 [stage-0 10/10] COPY . /app
^^^^ what is this command? maybe it restores all orifinal files?
set
NIXPACKS_NO_CACHE=1
I added it as env variable - deployed. it did not help.
I think the issue in in this command. it's something harmful
#14 [stage-0 10/10] COPY . /app
I have set the Custom Start Command
and what I see - these files that were copied at build time and became equal are different
Starting Container
-rw-r--r-- 1 root root 1459 Sep 12 17:48 public/blue.png
-rw-r--r-- 1 root root 534 Sep 12 17:48 public/green.png
-rw-r--r-- 1 root root 5344 Sep 12 17:48 public/red.png
-rw-r--r-- 1 root root 3595 Sep 12 17:48 public/yellow.png
β² Next.js 14.2.10
- Local: http://localhost:8080
β Starting...
β Ready in 477ms
Solution
you may be interested in writing a custom Dockerfile for your app, it will give you much more control over the build process
unfortunately I am not a real backend developer and have never used Docker (only run docker desktop for some reason I do not remember). I like railway that it allows even such dumb as me to deploy everything easily.
I could make a workaroud, like a special branch for deploy.
but it would be nice if you fix this... well, it's not so urgent.
but there is definitely something copied after deploy for some reason
i'm sorry but this is not a platform issue
I would agree with you but in this case we both will be wrong π¦
my deploy command is in the middle of dosen events and since it works locally or on vercel - I assume that it works correctly.
something in this chain changes files after the build