Browse Source

:wrench: add docker starter

Jeremy Zheng 1 year ago
parent
commit
124984f24a
31 changed files with 114 additions and 75 deletions
  1. 1 6
      deploy/ec2.yml
  2. 2 5
      deploy/group_vars/all.yml
  3. 26 5
      deploy/mint.yml
  4. 0 31
      deploy/roles/mint-backend-v8-build/tasks/main.yml
  5. 11 5
      deploy/roles/mint-dashboard-v4-build/tasks/main.yml
  6. 0 0
      deploy/roles/mint-v2.0/tasks/antd-v4.yml
  7. 0 0
      deploy/roles/mint-v2.0/tasks/laravel-v8.yml
  8. 0 0
      deploy/roles/mint-v2.0/tasks/lily.yml
  9. 0 0
      deploy/roles/mint-v2.0/tasks/main.yml
  10. 0 0
      deploy/roles/mint-v2.0/tasks/morus.yml
  11. 0 0
      deploy/roles/mint-v2.0/tasks/queue-workers.yml
  12. 0 0
      deploy/roles/mint-v2.0/tasks/tulip.yml
  13. 0 0
      deploy/roles/mint-v2.0/templates/v1/config.js.j2
  14. 0 0
      deploy/roles/mint-v2.0/templates/v1/config.php.j2
  15. 0 0
      deploy/roles/mint-v2.0/templates/v2/env.j2
  16. 0 0
      deploy/roles/mint-v2.0/templates/v2/lily/config.toml.j2
  17. 0 0
      deploy/roles/mint-v2.0/templates/v2/lily/services/server.service.j2
  18. 0 0
      deploy/roles/mint-v2.0/templates/v2/lily/services/worker.service.j2
  19. 0 0
      deploy/roles/mint-v2.0/templates/v2/morus.service.j2
  20. 0 0
      deploy/roles/mint-v2.0/templates/v2/queue-worker.service.j2
  21. 0 0
      deploy/roles/mint-v2.0/templates/v2/scheduler.service.j2
  22. 0 0
      deploy/roles/mint-v2.0/templates/v2/scheduler.timer.j2
  23. 0 0
      deploy/roles/mint-v2.0/templates/v2/tulip/config.php.j2
  24. 0 0
      deploy/roles/mint-v2.0/templates/v2/tulip/db/env.j2
  25. 0 0
      deploy/roles/mint-v2.0/templates/v2/tulip/service.conf.j2
  26. 42 0
      deploy/roles/mint-v2.1/tasks/main.yml
  27. 17 0
      deploy/roles/mint-v2.1/templates/docker.sh.j2
  28. 5 0
      deploy/roles/os/tasks/init.yml
  29. 2 1
      docker/README.md
  30. 3 3
      docker/mint/run.sh
  31. 5 19
      scripts/launch.sh

+ 1 - 6
deploy/ec2.yml

@@ -1,10 +1,5 @@
 - name: Testing ssh connections
-  hosts:
-    - web
-    - db
-    - fpm
-    - task
-    - logging
+  hosts: all,!localhost
   roles:
     - os
     - ubuntu

+ 2 - 5
deploy/group_vars/all.yml

@@ -2,12 +2,9 @@ ansible_user: "deploy"
 ansible_python_interpreter: /usr/bin/python3
 ansible_ssh_private_key_file: "{{ inventory_dir }}/.ssh/id_ed25519"
 
-app_deploy_target: "/srv/www/{{ inventory_hostname }}/{{ mint_version }}"
+app_deploy_target: "/mnt/www/{{ inventory_hostname }}/mint-{{ mint_version }}"
 app_downloads: "{{ ansible_env.HOME }}/downloads"
 
 app_dashboard_base_path: "/pcd"
 app_postgresql_version: "16"
-app_open_search_version: "2.19.0"
-app_open_search_arch: "arm64"
-
-app_dbmate_arch: "arm64"
+app_open_search_version: "2.19.1"

+ 26 - 5
deploy/mint.yml

@@ -1,12 +1,33 @@
-- name: Build backend v8
-  hosts: fort
-  roles:
-    - mint-backend-v8-build
-
 - name: Build frontend v4
   hosts: 127.0.0.1
   roles:
     - mint-dashboard-v4-build
+
+- name: Setup mint repo
+  hosts:
+    - web
+    - fpm
+    - task
+  roles:
+    - mint-v2.1
+# - name: Build backend v8
+#   hosts: fort
+#   roles:
+#     - mint-backend-v8-build
+
+# - name: Build backend v8
+#   hosts: fort
+#   roles:
+#     - mint-backend-v8-build
+
+# - name: Setup backend servers
+#   hosts:
+#     - web
+#     - fpm
+#     - task
+#   roles:
+#     - mint-v2
+
 # - name: Setup pali.syn
 #   hosts:
 #     - db

+ 0 - 31
deploy/roles/mint-backend-v8-build/tasks/main.yml

@@ -1,31 +0,0 @@
-- name: Download source code
-  ansible.builtin.unarchive:
-    src: https://github.com/iapt-platform/mint/archive/{{ mint_version }}.zip
-    dest: "{{ ansible_env.HOME }}/build"
-    remote_src: true
-    creates: "{{ ansible_env.HOME }}/build/mint-{{ mint_version }}"
-
-- name: Install third packages
-  ansible.builtin.command: docker/mint/run.sh {{ app_mint_image_name }} setup
-  args:
-    chdir: "{{ ansible_env.HOME }}/build/mint-{{ mint_version }}"
-    creates: api-v8/public/node_modules
-
-- name: Download repo
-  ansible.builtin.fetch:
-    src: "{{ ansible_env.HOME }}/build/mint-{{ mint_version }}"
-    dest: "{{ playbook_dir }}/tmp/"
-    mode: "0755"
-# - name: Upload dashboard dist
-#   ansible.builtin.copy:
-#     src: "{{ playbook_dir }}/tmp/mint-{{ mint_version }}/dashboard-v4/dashboard/dist"
-#     dest: "{{ ansible_env.HOME }}/build/mint-{{ mint_version }}/dashboard-v4/dashboard"
-#     mode: "0755"
-
-# - name: Compress repo.xz
-#   community.general.archive:
-#     path: "{{ ansible_env.HOME }}/build/mint-{{ mint_version }}"
-#     dest: "{{ ansible_env.HOME }}/build/mint-{{ mint_version }}.tar.xz"
-#     format: xz
-#     mode: "0444"
-

+ 11 - 5
deploy/roles/mint-dashboard-v4-build/tasks/main.yml

@@ -1,16 +1,22 @@
+- name: Git checkout repo
+  ansible.builtin.git:
+    repo: "https://github.com/iapt-platform/mint.git"
+    dest: "{{ playbook_dir }}/tmp/mint"
+    version: "{{ mint_version }}"
+
 - name: Extract dashboard node_modules
   ansible.builtin.unarchive:
     src: dashboard-20241201115354.tar.xz
-    dest: "{{ playbook_dir }}/tmp/mint-{{ mint_version }}/dashboard-v4/dashboard"
-    creates: "{{ playbook_dir }}/tmp/mint-{{ mint_version }}/dashboard-v4/dashboard/node_modules"
+    dest: "{{ playbook_dir }}/tmp/mint/dashboard-v4/dashboard"
+    creates: "{{ playbook_dir }}/tmp/mint/dashboard-v4/dashboard/node_modules"
 
 - name: Build dashboard dist
   ansible.builtin.shell: yarn build
   args:
-    chdir: "{{ playbook_dir }}/tmp/mint-{{ mint_version }}/dashboard-v4/dashboard"
-    creates: "{{ playbook_dir }}/tmp/mint-{{ mint_version }}/dashboard-v4/dashboard/dist"
+    chdir: "{{ playbook_dir }}/tmp/mint/dashboard-v4/dashboard"
+    creates: "{{ playbook_dir }}/tmp/mint/dashboard-v4/dashboard/dist-{{ mint_version }}"
   environment:
-    BUILD_PATH: "dist"
+    BUILD_PATH: "dist-{{ mint_version }}"
     NODE_OPTIONS: "--max_old_space_size=4096"
     PUBLIC_URL: "{{ app_dashboard_base_path }}"
     REACT_APP_DEFAULT_LOCALE: "zh-Hans"

+ 0 - 0
deploy/roles/mint-v2/tasks/antd-v4.yml → deploy/roles/mint-v2.0/tasks/antd-v4.yml


+ 0 - 0
deploy/roles/mint-v2/tasks/laravel-v8.yml → deploy/roles/mint-v2.0/tasks/laravel-v8.yml


+ 0 - 0
deploy/roles/mint-v2/tasks/lily.yml → deploy/roles/mint-v2.0/tasks/lily.yml


+ 0 - 0
deploy/roles/mint-v2/tasks/main.yml → deploy/roles/mint-v2.0/tasks/main.yml


+ 0 - 0
deploy/roles/mint-v2/tasks/morus.yml → deploy/roles/mint-v2.0/tasks/morus.yml


+ 0 - 0
deploy/roles/mint-v2/tasks/queue-workers.yml → deploy/roles/mint-v2.0/tasks/queue-workers.yml


+ 0 - 0
deploy/roles/mint-v2/tasks/tulip.yml → deploy/roles/mint-v2.0/tasks/tulip.yml


+ 0 - 0
deploy/roles/mint-v2/templates/v1/config.js.j2 → deploy/roles/mint-v2.0/templates/v1/config.js.j2


+ 0 - 0
deploy/roles/mint-v2/templates/v1/config.php.j2 → deploy/roles/mint-v2.0/templates/v1/config.php.j2


+ 0 - 0
deploy/roles/mint-v2/templates/v2/env.j2 → deploy/roles/mint-v2.0/templates/v2/env.j2


+ 0 - 0
deploy/roles/mint-v2/templates/v2/lily/config.toml.j2 → deploy/roles/mint-v2.0/templates/v2/lily/config.toml.j2


+ 0 - 0
deploy/roles/mint-v2/templates/v2/lily/services/server.service.j2 → deploy/roles/mint-v2.0/templates/v2/lily/services/server.service.j2


+ 0 - 0
deploy/roles/mint-v2/templates/v2/lily/services/worker.service.j2 → deploy/roles/mint-v2.0/templates/v2/lily/services/worker.service.j2


+ 0 - 0
deploy/roles/mint-v2/templates/v2/morus.service.j2 → deploy/roles/mint-v2.0/templates/v2/morus.service.j2


+ 0 - 0
deploy/roles/mint-v2/templates/v2/queue-worker.service.j2 → deploy/roles/mint-v2.0/templates/v2/queue-worker.service.j2


+ 0 - 0
deploy/roles/mint-v2/templates/v2/scheduler.service.j2 → deploy/roles/mint-v2.0/templates/v2/scheduler.service.j2


+ 0 - 0
deploy/roles/mint-v2/templates/v2/scheduler.timer.j2 → deploy/roles/mint-v2.0/templates/v2/scheduler.timer.j2


+ 0 - 0
deploy/roles/mint-v2/templates/v2/tulip/config.php.j2 → deploy/roles/mint-v2.0/templates/v2/tulip/config.php.j2


+ 0 - 0
deploy/roles/mint-v2/templates/v2/tulip/db/env.j2 → deploy/roles/mint-v2.0/templates/v2/tulip/db/env.j2


+ 0 - 0
deploy/roles/mint-v2/templates/v2/tulip/service.conf.j2 → deploy/roles/mint-v2.0/templates/v2/tulip/service.conf.j2


+ 42 - 0
deploy/roles/mint-v2.1/tasks/main.yml

@@ -0,0 +1,42 @@
+- name: Create www folder
+  become: true
+  ansible.builtin.file:
+    path: "/mnt/www/{{ inventory_hostname }}"
+    state: directory
+    mode: "0755"
+
+- name: Download source code
+  ansible.builtin.unarchive:
+    src: https://github.com/iapt-platform/mint/archive/{{ mint_version }}.zip
+    dest: "/mnt/www/{{ inventory_hostname }}"
+    remote_src: true
+    creates: "{{ app_deploy_target }}"
+
+# - name: Install third packages
+#   ansible.builtin.command: docker/mint/run.sh {{ app_mint_image_name }} setup
+#   args:
+#     chdir: "{{ ansible_env.HOME }}/build/mint-{{ mint_version }}"
+#     creates: "{{ ansible_env.HOME }}/build/mint-{{ mint_version }}/api-v8/public/node_modules"
+
+# if [ "$1" == "fpm" ]; then
+#     echo "start fpm worker"
+#     # TODO
+# elif [ "$1" == "setup" ]; then
+#     cd $WORK_DIR/api-v8/
+#     composer install --optimize-autoloader --no-dev
+#     npm install
+#     cd $WORK_DIR/api-v8/public/
+#     composer install --optimize-autoloader --no-dev
+#     npm install
+# elif [ "$1" == "db-migrate" ]; then
+#     echo "migrate database"
+#     # TODO
+# else
+#     echo $USAGE
+#     exit 1
+# fi
+
+- name: Upload dashboard-v4 dist
+  ansible.posix.synchronize:
+    src: "{{ playbook_dir }}/tmp/mint/dashboard-v4/dashboard/dist-{{ mint_version }}"
+    dest: "{{ app_deploy_target }}/dashboard-v4/dashboard"

+ 17 - 0
deploy/roles/mint-v2.1/templates/docker.sh.j2

@@ -0,0 +1,17 @@
+#!/bin/bash
+
+set -e
+
+export USAGE="USAGE: $0 setup"
+
+if [ "$#" -ne 1 ]; then
+    echo $USAGE
+    exit 1
+fi
+
+export WORK_DIR="/srv"
+
+export NVM_DIR="$HOME/.nvm"
+source "$NVM_DIR/nvm.sh"
+
+exit 0

+ 5 - 0
deploy/roles/os/tasks/init.yml

@@ -12,3 +12,8 @@
   ansible.builtin.file:
     path: "{{ ansible_env.HOME }}/local/"
     state: directory
+
+- name: Create tmp folder
+  ansible.builtin.file:
+    path: "{{ ansible_env.HOME }}/tmp/"
+    state: directory

+ 2 - 1
docker/README.md

@@ -20,5 +20,6 @@ podman image prune # removes all dangling images
 podman system reset # clean
 podman images # show images
 podman ps -a # show containers
-podman load -i tmp/mint-CODE-TIMESTAMP.tar.xz # import image
+# https://docs.podman.io/en/stable/markdown/podman.1.html#tmpdir-path
+TMPDIR=$HOME/tmp podman load -i images/mint-CODE-TIMESTAMP.tar.xz # import image
 ```

+ 3 - 3
docker/mint/run.sh

@@ -2,14 +2,14 @@
 
 set -e
 
-export USAGE="USAGE: $0 MINT_IMAGE TASK"
+export USAGE="USAGE: $0 MINT_IMAGE COMMAND"
 
-if [ "$#" -ne 2 ]; then
+if [[ "$#" -lt 2 ]]; then
     echo $USAGE
     exit 2
 fi
 
-export LAUNCH_MINT_CONTAINER="podman run --rm -it --events-backend=file --hostname=mint --network host -v $PWD:/srv:z $1"
+podman run --rm -it --events-backend=file --hostname=mint --network host -v $PWD:/srv:z $@
 
 if [ "$2" == "shell" ]; then
     $LAUNCH_MINT_CONTAINER /bin/bash

+ 5 - 19
scripts/launch.sh

@@ -2,9 +2,9 @@
 
 set -e
 
-export USAGE="USAGE: $0 setup"
+export USAGE="USAGE: $0 COMMAND"
 
-if [ "$#" -ne 1 ]; then
+if [ "$#" -lt 1 ]; then
     echo $USAGE
     exit 1
 fi
@@ -14,20 +14,6 @@ export WORK_DIR="/srv"
 export NVM_DIR="$HOME/.nvm"
 source "$NVM_DIR/nvm.sh"
 
-if [ "$1" == "fpm" ]; then
-    echo "start fpm worker"
-    # TODO
-elif [ "$1" == "setup" ]; then
-    cd $WORK_DIR/api-v8/
-    composer install --optimize-autoloader --no-dev
-    npm install
-    cd $WORK_DIR/api-v8/public/
-    composer install --optimize-autoloader --no-dev
-    npm install
-elif [ "$1" == "db-migrate" ]; then
-    echo "migrate database"
-    # TODO
-else
-    echo $USAGE
-    exit 1
-fi
+$@
+
+exit 0