setup_script
When porting applications, you may occasionally encounter situations where process permissions are inconsistent with lzcapp's default permissions (root), or need to perform some initialization operations before container startup.
The manifest.yml:services[].setup_script field can handle related issues.
Container Process UID
If it's just a user permission issue, you can use the manifest.yml:services[].user field to adjust UID
The principle of setup_script is to replace the docker image's own entrypoint/command parameters. After executing setup_script, lzcos automatically executes the original entrypoint/command logic.
When using setup_script, you need to pay attention to its execution timing
- It will be re-executed every time the container starts. Therefore, please note not to repeat operations with side effects.
manifest.yml:services[].bindsis completed when the container enters the created state, at this timesetup_scripthas not been executed yet- The original entrypoint/command is executed after
setup_script, so you cannot rely on some initialization states of the container image itself
For example
yaml
services:
cloudreve:
image: registry.lazycat.cloud/xxxxx/cloudreve/cloudreve:a9e2373b7ca59bc4
binds:
# First bind a subdirectory under the application var directory to the application's native storage directory,
# to avoid modifying upstream code. (Here assume it's the /conf/ directory)
- /lzcapp/var/cloudreve:/conf/
# Then copy the pre-installed configuration from lpk to the /conf directory
setup_script: | # This "|" is yml's multi-line string syntax,
if [ -z "$(find /conf -mindepth 1 -maxdepth 1)" ]; then
cp -r /lzcapp/pkg/content/defaults/ /conf/
fiservices:
cloudreve:
image: registry.lazycat.cloud/xxxxx/cloudreve/cloudreve:a9e2373b7ca59bc4
binds:
# First bind a subdirectory under the application var directory to the application's native storage directory,
# to avoid modifying upstream code. (Here assume it's the /conf/ directory)
- /lzcapp/var/cloudreve:/conf/
# Then copy the pre-installed configuration from lpk to the /conf directory
setup_script: | # This "|" is yml's multi-line string syntax,
if [ -z "$(find /conf -mindepth 1 -maxdepth 1)" ]; then
cp -r /lzcapp/pkg/content/defaults/ /conf/
fi