From 428e5ad3f0bb9492a92af055f9ed0eb1549ff794 Mon Sep 17 00:00:00 2001 From: Rodolfo Berrios <20590102+rodber@users.noreply.github.com> Date: Sat, 20 Nov 2021 19:49:32 -0300 Subject: [PATCH] source sync --- docs/DEVELOPMENT.md | 76 ++++++++++++++++++++++++++++++++++++++++++++ httpd-php-dev.yml | 2 +- httpd-php.Dockerfile | 1 - sync.sh | 14 +++----- 4 files changed, 82 insertions(+), 11 deletions(-) create mode 100644 docs/DEVELOPMENT.md diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md new file mode 100644 index 0000000..5fe939e --- /dev/null +++ b/docs/DEVELOPMENT.md @@ -0,0 +1,76 @@ +# Development + +## Quick start + +* Clone [rodber/chevereto-free](https://github.com/rodber/chevereto-free) +* Run [docker-compose up](#up) +* [Sync code](#sync-code) to sync changes + +## Reference + +* `SOURCE` is the absolute path to the cloned chevereto project +* You need to replace `SOURCE=~/git/rodber/chevereto-free` with your own path +* `SOURCE` will be mounted at `/var/www/source/` inside the container +* Chevereto will be available at [localhost:8910](http://localhost:8910) + +✨ This dev setup mounts `SOURCE` to provide the application files to the container. We provide a sync system that copies these files on-the-fly to the actual application runner for better isolation. + +## docker-compose + +Compose file: [httpd-php-dev.yml](../httpd-php-dev.yml) + +Alter `SOURCE` in the commands below to reflect your project path. + +## Up + +Run this command to spawn (start) Chevereto Installer. + +```sh +SOURCE=~/git/rodber/chevereto-free \ +docker-compose \ + -p chevereto-free-dev \ + -f httpd-php-dev.yml \ + up -d +``` + +## Stop + +Run this command to stop Chevereto Installer. + +```sh +SOURCE=~/git/rodber/chevereto-free \ +docker-compose \ + -p chevereto-free-dev \ + -f httpd-php-dev.yml \ + stop +``` + +## Down (uninstall) + +Run this command to down Chevereto (stop containers, remove networks and volumes created by it). + +```sh +SOURCE=~/git/rodber/chevereto-free \ +docker-compose \ + -p chevereto-free-dev \ + -f httpd-php-dev.yml \ + down --volumes +``` + +## Sync code + +Run this command to sync the application code with your working project. + +```sh +docker exec -it \ + chevereto-free-dev_app \ + bash /var/www/sync.sh +``` + +This system will observe for changes in your working project filesystem and it will automatically sync the files inside the container. + +**Note:** This command must keep running to provide the sync functionality. You should close it once you stop working with the source. + +## Logs + +`todo` diff --git a/httpd-php-dev.yml b/httpd-php-dev.yml index c7f083a..a9dbf99 100644 --- a/httpd-php-dev.yml +++ b/httpd-php-dev.yml @@ -25,7 +25,7 @@ services: - app:/var/www/html/ - type: bind source: ${SOURCE} - target: /var/www/chevereto + target: /var/www/chevereto-free ports: - 8910:80 restart: always diff --git a/httpd-php.Dockerfile b/httpd-php.Dockerfile index 937a486..b8f6469 100644 --- a/httpd-php.Dockerfile +++ b/httpd-php.Dockerfile @@ -71,7 +71,6 @@ RUN set -eux; \ VOLUME /var/www/html VOLUME /var/www/html/images -VOLUME /var/www/source COPY . /var/www/html RUN rm /var/www/html/sync.sh diff --git a/sync.sh b/sync.sh index f4d17d1..6812d5b 100644 --- a/sync.sh +++ b/sync.sh @@ -1,22 +1,18 @@ #!/usr/bin/env bash set -e -SOURCE=/var/www/source/ -INSTALLER=/var/www/installer/ +SOURCE=/var/www/chevereto-free/ TARGET=/var/www/html/ EXCLUDE="\.git|\.DS_Store|\/docs" -mkdir -p $INSTALLER -cp "${SOURCE}".gitignore "${INSTALLER}".gitignore +cp "${SOURCE}".gitignore "${TARGET}".gitignore function sync() { rsync -r -I -og \ --chown=www-data:www-data \ --info=progress2 \ --filter=':- .gitignore' \ - --exclude '.git' \ + --filter=':- .dockerignore' \ + --exclude '.git sync.sh' \ --delete \ - $SOURCE $INSTALLER - # php "${INSTALLER}"src/build.php - # cp "${INSTALLER}"build/installer.php "${TARGET}"installer.php - # chown www-data: $TARGET -R + $SOURCE $TARGET } sync inotifywait \