mirror of
https://github.com/penpot/penpot.git
synced 2025-01-21 14:12:36 -05:00
✨ New docker recipes for a backend only environment
This commit is contained in:
parent
007728819b
commit
bc725800ed
6 changed files with 149 additions and 12 deletions
|
@ -10,6 +10,23 @@ if [ ! -e ~/.fixtures-loaded ]; then
|
||||||
touch ~/.fixtures-loaded
|
touch ~/.fixtures-loaded
|
||||||
fi
|
fi
|
||||||
|
|
||||||
clojure -A:dev -M -m app.main
|
if [ "$1" = "--watch" ]; then
|
||||||
|
echo "Start Watch..."
|
||||||
|
|
||||||
|
clojure -A:dev -M -m app.main &
|
||||||
|
PID=$!
|
||||||
|
|
||||||
|
npx nodemon \
|
||||||
|
--watch src \
|
||||||
|
--watch ../common \
|
||||||
|
--ext "clj" \
|
||||||
|
--signal SIGKILL \
|
||||||
|
--exec 'echo "(user/restart)" | nc -N localhost 6062'
|
||||||
|
|
||||||
|
kill -9 $PID
|
||||||
|
else
|
||||||
|
clojure -A:dev -M -m app.main
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,7 @@ RUN set -ex; \
|
||||||
rlwrap \
|
rlwrap \
|
||||||
unzip \
|
unzip \
|
||||||
fakeroot \
|
fakeroot \
|
||||||
|
netcat \
|
||||||
; \
|
; \
|
||||||
echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen; \
|
echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen; \
|
||||||
locale-gen; \
|
locale-gen; \
|
||||||
|
@ -172,9 +173,10 @@ COPY files/vimrc /root/.vimrc
|
||||||
COPY files/tmux.conf /root/.tmux.conf
|
COPY files/tmux.conf /root/.tmux.conf
|
||||||
COPY files/sudoers /etc/sudoers
|
COPY files/sudoers /etc/sudoers
|
||||||
|
|
||||||
COPY files/start-tmux.sh /home/start-tmux.sh
|
COPY files/start-tmux.sh /home/start-tmux.sh
|
||||||
COPY files/entrypoint.sh /home/entrypoint.sh
|
COPY files/start-tmux-back.sh /home/start-tmux-back.sh
|
||||||
COPY files/init.sh /home/init.sh
|
COPY files/entrypoint.sh /home/entrypoint.sh
|
||||||
|
COPY files/init.sh /home/init.sh
|
||||||
|
|
||||||
ENTRYPOINT ["/home/entrypoint.sh"]
|
ENTRYPOINT ["/home/entrypoint.sh"]
|
||||||
CMD ["/home/init.sh"]
|
CMD ["/home/init.sh"]
|
||||||
|
|
|
@ -13,6 +13,7 @@ volumes:
|
||||||
|
|
||||||
services:
|
services:
|
||||||
main:
|
main:
|
||||||
|
profiles: ["full"]
|
||||||
privileged: true
|
privileged: true
|
||||||
image: "penpotapp/devenv:latest"
|
image: "penpotapp/devenv:latest"
|
||||||
build:
|
build:
|
||||||
|
@ -49,6 +50,57 @@ services:
|
||||||
- PENPOT_SMTP_PASSWORD=
|
- PENPOT_SMTP_PASSWORD=
|
||||||
- PENPOT_SMTP_SSL=false
|
- PENPOT_SMTP_SSL=false
|
||||||
- PENPOT_SMTP_TLS=false
|
- PENPOT_SMTP_TLS=false
|
||||||
|
- PENPOT_FLAGS="enable-cors"
|
||||||
|
|
||||||
|
# LDAP setup
|
||||||
|
- PENPOT_LDAP_HOST=ldap
|
||||||
|
- PENPOT_LDAP_PORT=10389
|
||||||
|
- PENPOT_LDAP_SSL=false
|
||||||
|
- PENPOT_LDAP_STARTTLS=false
|
||||||
|
- PENPOT_LDAP_BASE_DN=ou=people,dc=planetexpress,dc=com
|
||||||
|
- PENPOT_LDAP_BIND_DN=cn=admin,dc=planetexpress,dc=com
|
||||||
|
- PENPOT_LDAP_BIND_PASSWORD=GoodNewsEveryone
|
||||||
|
- PENPOT_LDAP_ATTRS_USERNAME=uid
|
||||||
|
- PENPOT_LDAP_ATTRS_EMAIL=mail
|
||||||
|
- PENPOT_LDAP_ATTRS_FULLNAME=cn
|
||||||
|
- PENPOT_LDAP_ATTRS_PHOTO=jpegPhoto
|
||||||
|
|
||||||
|
backend:
|
||||||
|
profiles: ["backend"]
|
||||||
|
privileged: true
|
||||||
|
image: "penpotapp/devenv:latest"
|
||||||
|
build:
|
||||||
|
context: "."
|
||||||
|
container_name: "penpot-backend"
|
||||||
|
stop_signal: SIGINT
|
||||||
|
|
||||||
|
depends_on:
|
||||||
|
- postgres
|
||||||
|
- redis
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
- "user_data:/home/penpot/"
|
||||||
|
- "${PWD}:/home/penpot/penpot"
|
||||||
|
|
||||||
|
ports:
|
||||||
|
- 6060:6060
|
||||||
|
- 6061:6061
|
||||||
|
- 9090:9090
|
||||||
|
|
||||||
|
environment:
|
||||||
|
- EXTERNAL_UID=${CURRENT_USER_ID}
|
||||||
|
- PENPOT_SECRET_KEY=super-secret-devenv-key
|
||||||
|
# STMP setup
|
||||||
|
- PENPOT_SMTP_ENABLED=true
|
||||||
|
- PENPOT_SMTP_DEFAULT_FROM=no-reply@example.com
|
||||||
|
- PENPOT_SMTP_DEFAULT_REPLY_TO=no-reply@example.com
|
||||||
|
- PENPOT_SMTP_HOST=mailer
|
||||||
|
- PENPOT_SMTP_PORT=1025
|
||||||
|
- PENPOT_SMTP_USERNAME=
|
||||||
|
- PENPOT_SMTP_PASSWORD=
|
||||||
|
- PENPOT_SMTP_SSL=false
|
||||||
|
- PENPOT_SMTP_TLS=false
|
||||||
|
- PENPOT_FLAGS="enable-cors"
|
||||||
|
|
||||||
# LDAP setup
|
# LDAP setup
|
||||||
- PENPOT_LDAP_HOST=ldap
|
- PENPOT_LDAP_HOST=ldap
|
||||||
|
|
33
docker/devenv/files/start-tmux-back.sh
Executable file
33
docker/devenv/files/start-tmux-back.sh
Executable file
|
@ -0,0 +1,33 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
sudo chown penpot:users /home/penpot
|
||||||
|
|
||||||
|
cd ~;
|
||||||
|
|
||||||
|
source ~/.bashrc
|
||||||
|
|
||||||
|
set -e;
|
||||||
|
|
||||||
|
echo "[start-tmux.sh] Installing node dependencies"
|
||||||
|
pushd ~/penpot/exporter/
|
||||||
|
yarn install
|
||||||
|
popd
|
||||||
|
|
||||||
|
tmux -2 new-session -d -s penpot
|
||||||
|
|
||||||
|
tmux rename-window -t penpot:0 'exporter'
|
||||||
|
tmux select-window -t penpot:0
|
||||||
|
tmux send-keys -t penpot 'cd penpot/exporter' enter C-l
|
||||||
|
tmux send-keys -t penpot 'rm -f target/app.js*' enter C-l
|
||||||
|
tmux send-keys -t penpot 'clojure -M:dev:shadow-cljs watch main' enter
|
||||||
|
|
||||||
|
tmux split-window -v
|
||||||
|
tmux send-keys -t penpot 'cd penpot/exporter' enter C-l
|
||||||
|
tmux send-keys -t penpot './scripts/wait-and-start.sh' enter
|
||||||
|
|
||||||
|
tmux new-window -t penpot:1 -n 'backend'
|
||||||
|
tmux select-window -t penpot:1
|
||||||
|
tmux send-keys -t penpot 'cd penpot/backend' enter C-l
|
||||||
|
tmux send-keys -t penpot './scripts/start-dev' enter
|
||||||
|
|
||||||
|
tmux -2 attach-session -t penpot
|
|
@ -18,6 +18,11 @@ popd
|
||||||
|
|
||||||
tmux -2 new-session -d -s penpot
|
tmux -2 new-session -d -s penpot
|
||||||
|
|
||||||
|
tmux rename-window -t penpot:0 'gulp'
|
||||||
|
tmux select-window -t penpot:0
|
||||||
|
tmux send-keys -t penpot 'cd penpot/frontend' enter C-l
|
||||||
|
tmux send-keys -t penpot 'npx gulp watch' enter
|
||||||
|
|
||||||
tmux new-window -t penpot:1 -n 'shadow watch'
|
tmux new-window -t penpot:1 -n 'shadow watch'
|
||||||
tmux select-window -t penpot:1
|
tmux select-window -t penpot:1
|
||||||
tmux send-keys -t penpot 'cd penpot/frontend' enter C-l
|
tmux send-keys -t penpot 'cd penpot/frontend' enter C-l
|
||||||
|
@ -38,9 +43,4 @@ tmux select-window -t penpot:3
|
||||||
tmux send-keys -t penpot 'cd penpot/backend' enter C-l
|
tmux send-keys -t penpot 'cd penpot/backend' enter C-l
|
||||||
tmux send-keys -t penpot './scripts/start-dev' enter
|
tmux send-keys -t penpot './scripts/start-dev' enter
|
||||||
|
|
||||||
tmux rename-window -t penpot:0 'gulp'
|
|
||||||
tmux select-window -t penpot:0
|
|
||||||
tmux send-keys -t penpot 'cd penpot/frontend' enter C-l
|
|
||||||
tmux send-keys -t penpot 'npx gulp watch' enter
|
|
||||||
|
|
||||||
tmux -2 attach-session -t penpot
|
tmux -2 attach-session -t penpot
|
||||||
|
|
39
manage.sh
39
manage.sh
|
@ -44,15 +44,32 @@ function pull-devenv-if-not-exists {
|
||||||
|
|
||||||
function start-devenv {
|
function start-devenv {
|
||||||
pull-devenv-if-not-exists $@;
|
pull-devenv-if-not-exists $@;
|
||||||
docker-compose -p $DEVENV_PNAME -f docker/devenv/docker-compose.yaml up -d;
|
|
||||||
|
# Check if the "backend-only" container is running. If it is, we need tot stop it first
|
||||||
|
if [[ ! $(docker ps -f "name=penpot-backend" -q) ]]; then
|
||||||
|
docker-compose -p $DEVENV_PNAME --profile backend -f docker/devenv/docker-compose.yaml stop -t 2 backend;
|
||||||
|
fi
|
||||||
|
|
||||||
|
docker-compose -p $DEVENV_PNAME --profile full -f docker/devenv/docker-compose.yaml up -d;
|
||||||
|
}
|
||||||
|
|
||||||
|
function start-backend {
|
||||||
|
pull-devenv-if-not-exists $@;
|
||||||
|
|
||||||
|
# Check if the "devenv" container is running. If it is, we need tot stop it first because conflicts with the backend
|
||||||
|
if [[ ! $(docker ps -f "name=penpot-devenv-main" -q) ]]; then
|
||||||
|
docker-compose -p $DEVENV_PNAME --profile full -f docker/devenv/docker-compose.yaml stop -t 2 main;
|
||||||
|
fi
|
||||||
|
|
||||||
|
docker-compose -p $DEVENV_PNAME --profile backend -f docker/devenv/docker-compose.yaml up -d;
|
||||||
}
|
}
|
||||||
|
|
||||||
function stop-devenv {
|
function stop-devenv {
|
||||||
docker-compose -p $DEVENV_PNAME -f docker/devenv/docker-compose.yaml stop -t 2;
|
docker-compose -p $DEVENV_PNAME --profile full --profile backend -f docker/devenv/docker-compose.yaml stop -t 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
function drop-devenv {
|
function drop-devenv {
|
||||||
docker-compose -p $DEVENV_PNAME -f docker/devenv/docker-compose.yaml down -t 2 -v;
|
docker-compose -p $DEVENV_PNAME --profile full --profile backend -f docker/devenv/docker-compose.yaml down -t 2 -v;
|
||||||
|
|
||||||
echo "Clean old development image $DEVENV_IMGNAME..."
|
echo "Clean old development image $DEVENV_IMGNAME..."
|
||||||
docker images $DEVENV_IMGNAME -q | awk '{print $3}' | xargs --no-run-if-empty docker rmi
|
docker images $DEVENV_IMGNAME -q | awk '{print $3}' | xargs --no-run-if-empty docker rmi
|
||||||
|
@ -70,6 +87,14 @@ function run-devenv {
|
||||||
docker exec -ti penpot-devenv-main sudo -EH -u penpot /home/start-tmux.sh
|
docker exec -ti penpot-devenv-main sudo -EH -u penpot /home/start-tmux.sh
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function run-backend {
|
||||||
|
if [[ ! $(docker ps -f "name=penpot-backend" -q) ]]; then
|
||||||
|
start-backend
|
||||||
|
fi
|
||||||
|
|
||||||
|
docker exec -ti penpot-backend sudo -EH -u penpot /home/start-tmux-back.sh
|
||||||
|
}
|
||||||
|
|
||||||
function build {
|
function build {
|
||||||
echo ">> build start: $1"
|
echo ">> build start: $1"
|
||||||
local version=$(print-current-version);
|
local version=$(print-current-version);
|
||||||
|
@ -175,6 +200,8 @@ function usage {
|
||||||
echo "- stop-devenv Stops the development oriented docker-compose service."
|
echo "- stop-devenv Stops the development oriented docker-compose service."
|
||||||
echo "- drop-devenv Remove the development oriented docker-compose containers, volumes and clean images."
|
echo "- drop-devenv Remove the development oriented docker-compose containers, volumes and clean images."
|
||||||
echo "- run-devenv Attaches to the running devenv container and starts development environment"
|
echo "- run-devenv Attaches to the running devenv container and starts development environment"
|
||||||
|
echo "- start-backend Start the backend only service."
|
||||||
|
echo "- run-backend Starts a backend-only instance and attach tmux to it"
|
||||||
echo " based on tmux (frontend at localhost:3449, backend at localhost:6060)."
|
echo " based on tmux (frontend at localhost:3449, backend at localhost:6060)."
|
||||||
echo ""
|
echo ""
|
||||||
}
|
}
|
||||||
|
@ -196,9 +223,15 @@ case $1 in
|
||||||
start-devenv)
|
start-devenv)
|
||||||
start-devenv ${@:2}
|
start-devenv ${@:2}
|
||||||
;;
|
;;
|
||||||
|
start-backend)
|
||||||
|
start-backend ${@:2}
|
||||||
|
;;
|
||||||
run-devenv)
|
run-devenv)
|
||||||
run-devenv ${@:2}
|
run-devenv ${@:2}
|
||||||
;;
|
;;
|
||||||
|
run-backend)
|
||||||
|
run-backend ${@:2}
|
||||||
|
;;
|
||||||
stop-devenv)
|
stop-devenv)
|
||||||
stop-devenv ${@:2}
|
stop-devenv ${@:2}
|
||||||
;;
|
;;
|
||||||
|
|
Loading…
Add table
Reference in a new issue