This is part of the Semicolon&Sons Code Diary - consisting of lessons learned on the job. You're in the bash category.
Last Updated: 2024-11-21
When I ran the following command to deploy, I noticed they were erratically
failing, saying the .env.production
file was not available on the system
(despite the fact that the file should have already been copied over and
sporadically was available when I ran this same script). Look at the code and
guess at the issue:
# Executed from the folder `code/docker-jista`
scp -p -r $(pwd) schillerchorchat:webapp
ssh schillerchorchat << EOF
cd webapp
mv .env.production .env
...
EOF
The first issue I thought of was that mv
was not idempotent. On the first run
.env.production
is available. But on the second, it's already been renamed to
.env
so of course it's unavailable. So here I could consider using cp
instead (messy). Or zoom out and run the command that copies over the
.env.production
file over every time I re-execute, i.e. make the unit of
retrying larger and more cohesive.
The second issue was trickier : The issue was that scp
when run the first time
put the current dir into ~/webapp
on the server. The second time, though, it
put it into ~/webapp/docker-jista
The simple fix was to start from scratch each time and avoid this class of errors:
ssh schillerchorchat sudo rm -rf webapp
scp -p -r $(pwd) schillerchorchat:webapp