Why did a lock exist during RUN REPEATABLE?
For ‘docker run’ or ‘docker-compose up’:
The conditions of this error are:- Volume mounts are from the destination of a
COPY
directive. - Volume mounts are created in the command run by
RUN REPEATABLE
(e.g.,docker-compose up -d
) - The containers keep running after
RUN REPEATABLE
completes.
docker-compose up -d
in a separate run directive:
Putting docker-compose up -d
outside of RUN REPEATABLE
will break condition
(2), so a common solution is something like this:
Layerfile
docker-compose.yml
file and don’t run docker run
with the -v
or --volume
flags. Consider the following example:
yq
can be used for a similar
purpose.
Solution 3: Copy everything to another directory: Copying the entire
directory somewhere else will resolve this issue, but cause the step to never be
skipped (as all files are read):
Layerfile
For ‘npm run start’ or other persistent servers
Sometimes, web servers (especially node.js versions) withinRUN REPEATABLE
will cause this problem as well. The simplest solution is to start the webserver
in a non-repeatable directive or to copy the files before starting it:
Copy everything to another directory: When copying your files to another
directory, your Layerfile may contain something like this:
Layerfile