reduce docker-image-size by excluding git submodules
This commit is contained in:
		
							parent
							
								
									a7f1d60cb0
								
							
						
					
					
						commit
						149e926031
					
				
					 5 changed files with 47 additions and 10 deletions
				
			
		
							
								
								
									
										3
									
								
								.gitmodules
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.gitmodules
									
										
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -1,3 +0,0 @@
 | 
			
		|||
[submodule "xrfragment"]
 | 
			
		||||
	path = xrfragment
 | 
			
		||||
	url = https://codeberg.org/coderofsalvation/xrfragment
 | 
			
		||||
| 
						 | 
				
			
			@ -3,9 +3,22 @@
 | 
			
		|||
The XRForge-serverimage is a pre-configured [Manyfold](https://manyfold.app) container (reproducably via [nix](https://nixos.org) dockertools).
 | 
			
		||||
It also contains some extra's, to better fit an XR audience & enable community libraries.
 | 
			
		||||
 | 
			
		||||
> To run the container, see the [sysadmin](https://manyfold.app/sysadmin/) documentation of the [manyfold](https://github.com/manyfold3d/manyfold) project.
 | 
			
		||||
> To run the container, see the docker-cmd below [sysadmin](https://manyfold.app/sysadmin/) documentation of the [manyfold](https://github.com/manyfold3d/manyfold) project.
 | 
			
		||||
 | 
			
		||||
# Build/Run the container-image
 | 
			
		||||
```
 | 
			
		||||
$ docker run -t xrforge docker.io/coderofsalvation/xrforge:latest
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
To persist data:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
$ mkdir mnt config
 | 
			
		||||
$ docker run -t xrforge docker.io/coderofsalvation/xrforge:latest -v ./mnt:/mnt -v ./config:/config
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
# Build & Run the container-image
 | 
			
		||||
 | 
			
		||||
> **NOTE**: [nix](https://nixos.org) is used to promote reproducability-over-repeatability
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
$ git clone --recurse-submodules --depth 1 https://codeberg.org/coderofsalvation/xrforge.git 
 | 
			
		||||
| 
						 | 
				
			
			@ -21,7 +34,7 @@ sending incremental file list
 | 
			
		|||
...
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
> NOTE: if you don't want the default XR Fragments asset-library, omit `--recurse-submodules` in the git cmd and `-v ./xrfragment....` in the docker cmd.
 | 
			
		||||
> NOTE: if you don't want the default XR Fragments asset-library, omit `--recurse-submodules` in the git cmd
 | 
			
		||||
 | 
			
		||||
To preserve your uploaded models, add the `experiences` as a docker volume-flag, for example:
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -39,8 +52,10 @@ $ manyfold/cli/manyfold run -v ./experiences:/mnt/experiences
 | 
			
		|||
| `HOMEPAGE`            | `/models`    | show '/models' URL as homepage (use `/` for manyfold default) |
 | 
			
		||||
| `THEME`               | `default`    | bootstrap theme        |
 | 
			
		||||
| `RUNTESTS`            | `0`          | set to `1` to run XRForge related [/test](test) scripts |
 | 
			
		||||
| `NO_PUBLIC_ONLY`      | ``           | disable public only models |
 | 
			
		||||
| `NO_OVERLAYFS`        | ``           | disable the filesystem overlay mechanism |
 | 
			
		||||
| `NO_DEFAULTDB`        | ``           | disable the default db (activates manyfold installer) |
 | 
			
		||||
| `NO_DEFAULTDB`        | ``           | disable the default xrforge db (activates manyfold installer) |
 | 
			
		||||
| `NO_ASSETS`           | ``           | disable downloading assets from xrfragment.org repository |
 | 
			
		||||
| `NO_DELETEBIGFILES`   | ``           | disable deleting big files which are older than 5 days and bigger than ($currentyear-2020) MB's |
 | 
			
		||||
| `NO_PACKAGEALL`       | ``           | don't package all experiences every hour to /usr/src/app/public/experiences.zip |
 | 
			
		||||
| `RCLONE_REMOTE`       | ``           | specify **single** rclone remote name (without semicolon) to mount (default: mount all rclone remotes)|
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -179,12 +179,37 @@ start_syslog(){
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
scan_libraries(){
 | 
			
		||||
  sleep 20 # wait for manyfold/redis to boot first
 | 
			
		||||
  sleep 10 # wait for manyfold/redis to boot first
 | 
			
		||||
  cd /usr/src/app
 | 
			
		||||
  echocolor "scanning libraries"
 | 
			
		||||
  bin/manyfold libraries scan
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
rails_query(){
 | 
			
		||||
  cd /usr/src/app
 | 
			
		||||
  echo "$*" | bin/rails console
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
force_public(){
 | 
			
		||||
  test -n "$NO_PUBLIC_ONLY" && return 0 # nothing to do
 | 
			
		||||
  echocolor "forcing public-only models"
 | 
			
		||||
  infinite 60 rails_query 'Model.find_each { |it| it.grant_permission_to("view", nil) }' &
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
get_xrfragment_assets(){
 | 
			
		||||
  test -n "$NO_ASSETS" && return 0 # nothing to do here
 | 
			
		||||
  test -d /mnt/assets || {
 | 
			
		||||
    echocolor "fetching XR Fragments assets & templates"
 | 
			
		||||
    mkdir -p /mnt/assets/xrfragment/\#1
 | 
			
		||||
    cd /tmp
 | 
			
		||||
    timeout 50 wget "https://codeberg.org/coderofsalvation/xrfragment/archive/main.zip"
 | 
			
		||||
    unzip main.zip
 | 
			
		||||
    cp -r xrfragment/assets/* /mnt/assets/xrfragment/\#1/.
 | 
			
		||||
    rm -rf main.zip xrfragment
 | 
			
		||||
  }
 | 
			
		||||
  add_lib_to_db /mnt/assets
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# The new entrypoint of the docker 
 | 
			
		||||
boot(){
 | 
			
		||||
  echocolor "[$APPNAME]" "booting..."
 | 
			
		||||
| 
						 | 
				
			
			@ -199,6 +224,8 @@ boot(){
 | 
			
		|||
  mount_rclone
 | 
			
		||||
  set_upload_path
 | 
			
		||||
  start_hook_daemon
 | 
			
		||||
  force_public
 | 
			
		||||
  get_xrfragment_assets
 | 
			
		||||
  scan_libraries &
 | 
			
		||||
  hook boot # emit unixy hook-event (/root/hook.d/boot/* scripts)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1 +0,0 @@
 | 
			
		|||
../../../xrfragment/assets
 | 
			
		||||
| 
						 | 
				
			
			@ -1 +0,0 @@
 | 
			
		|||
Subproject commit 7a95d4ffbf610d4a82d586eb04edf8c24460a195
 | 
			
		||||
		Loading…
	
	Add table
		
		Reference in a new issue