feat(macOs): add support for macOs Catalina and above

This commit is contained in:
Simon Belbeoch
2022-12-15 11:51:42 +01:00
parent 49e6d44c2f
commit d993c1b6d7
3 changed files with 57 additions and 6 deletions

View File

@@ -27,16 +27,12 @@ The goal is to make the common use-cases exposed via simple controls on UI while
First, you need a Captain instance running in debug mode, this can be a remote server, a VM on your local machine,
or your local machine itself. Needless to say, Docker is required (same minimum version as mentioned in README). Ubuntu is the best dev environment for CapRover.
> Docker for Mac users: You need to add `/captain` to shared paths.
> To do so, click on the Docker icon -> Preferences -> Ressources -> File Sharing and add `/captain`
> This is not possible in Catalina or above versions. You can try your luck by changing `CAPTAIN_BASE_DIRECTORY` in `src/utils/CaptainConstants.ts` and in `dev-scripts/dev-clean-run-as-dev.sh` but it might be best to develop in a linux VM for best results.
Log in to your machine, clone the git repo and run the following lines:
#### On Linux and Windows
```bash
$ npm install
$ npm run build
$ ./dev-scripts/dev-clean-run-as-dev.sh
$ sudo ./dev-scripts/dev-clean-run-as-dev.sh
```
You are good to go! You can run the following line to see the logs for the back-end service.
@@ -45,6 +41,31 @@ You are good to go! You can run the following line to see the logs for the back-
npm run dev
```
#### On macOs
##### Prepare your system (for Catalina and above)
Because of security restriction we have more step to apply on macOs.
Create a folder wherever you want (for me it will be /opt/captain).
Link this folder to the root folder (Apple does not allow to create folder on the root but you can do it with a symb link by adding the file in `/etc/synthetic.conf` [see](https://stackoverflow.com/questions/58396821/what-is-the-proper-way-to-create-a-root-sym-link-in-catalina))
(don't panic id the file does not exist, if you create it will work well.)
1) `sudo vi /etc/synthetic.conf`
2) add `captain opt/captain` into this file (note this is a tab and not a space ((Ctrl-V + Tab) character))
3) reboot
4) Prepare your docker system
##### Prepare your docker (for all macOs User)
> You need to add `/captain` to shared paths.
> To do so, click on the Docker icon -> Preferences -> Ressources -> File Sharing and add `/captain`
#####
use node 14 then
```bash
$ npm install
$ npm run build
$ sudo ./dev-scripts/dev-clean-run-as-dev-macos-step-1.sh
$ ./dev-scripts/dev-clean-run-as-dev-macos-step-2.sh
```
The main differences between the release and debug mode are:
- docker image is created from the local source file, instead of getting pulled from Docker hub

View File

@@ -0,0 +1,11 @@
#!/bin/sh
if ! [ $(id -u) = 0 ]; then
echo "Must run as sudo or root"
exit 1
fi
# on macos Catalina and above, /captain is a symb link. we cannot remove the folder so we delete all files inside
# rm -rf /captain && mkdir /captain
rm -rf /captain/*
chmod -R 777 /captain/

View File

@@ -0,0 +1,19 @@
#!/bin/sh
if ! [ $(id -u) <> 0 ]; then
echo "Must not be run as sudo or root on macos (macos security) please run the step 1 as root and this step as standard user"
exit 1
fi
docker service rm $(docker service ls -q)
sleep 1
docker secret rm captain-salt
docker build -t captain-debug -f dockerfile-captain.debug .
docker run \
-e "CAPTAIN_IS_DEBUG=1" \
-e "MAIN_NODE_IP_ADDRESS=127.0.0.1" \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /captain:/captain \
-v $(pwd):/usr/src/app captain-debug
sleep 2s
docker service logs captain-captain --follow