From 2bd40e298242f32dfefe82852d6110b0beb91285 Mon Sep 17 00:00:00 2001 From: Jaewook Lee <11328376+jaewooklee93@users.noreply.github.com> Date: Mon, 5 Aug 2024 03:10:54 +0900 Subject: [PATCH] latest compose --- docker-compose/docker-compose.yml | 155 ------------------------------ docker-compose/my.yml | 109 +++++++++++++++++++++ docker-compose/nightly.yml | 29 ++++++ docker-compose/public.yml | 142 ++++----------------------- 4 files changed, 156 insertions(+), 279 deletions(-) delete mode 100644 docker-compose/docker-compose.yml create mode 100644 docker-compose/my.yml create mode 100644 docker-compose/nightly.yml diff --git a/docker-compose/docker-compose.yml b/docker-compose/docker-compose.yml deleted file mode 100644 index 673b9a4..0000000 --- a/docker-compose/docker-compose.yml +++ /dev/null @@ -1,155 +0,0 @@ -networks: - default: - external: - name: my_network - -services: - nginx: - image: 'jc21/nginx-proxy-manager:latest' - restart: unless-stopped - ports: - - '80:80' # Public HTTP Port - - '443:443' # Public HTTPS Port - - '81:81' # Admin Web Port - environment: - # Mysql/Maria connection parameters: - DB_MYSQL_HOST: "db" - DB_MYSQL_PORT: 3306 - DB_MYSQL_USER: "npm" - DB_MYSQL_PASSWORD: "npm" - DB_MYSQL_NAME: "npm" - DISABLE_IPV6: 'true' - volumes: - - /mnt/docker/nginx:/data - - /mnt/docker/letsencrypt:/etc/letsencrypt - depends_on: - - db - - db: - image: 'jc21/mariadb-aria:latest' - restart: unless-stopped - environment: - MYSQL_ROOT_PASSWORD: 'npm' - MYSQL_DATABASE: 'npm' - MYSQL_USER: 'npm' - MYSQL_PASSWORD: 'npm' - MARIADB_AUTO_UPGRADE: '1' - volumes: - - /mnt/docker/mysql:/var/lib/mysql - - redis: - image: redis/redis-stack:latest - restart: unless-stopped - ports: - - 6379:6379 - - 8001:8001 - volumes: - - /mnt/docker/redis:/data - environment: - - REDIS_ARGS=--appendonly yes - - mongo: - image: mongo - restart: unless-stopped - ports: - - 27017:27017 - environment: - MONGO_INITDB_ROOT_USERNAME: root - MONGO_INITDB_ROOT_PASSWORD: example - volumes: - - /mnt/docker/mongodb:/data/db - - /mnt/docker/configdb:/data/configdb - - mongo-express: - image: mongo-express - restart: unless-stopped - environment: - ME_CONFIG_MONGODB_ADMINUSERNAME: root - ME_CONFIG_MONGODB_ADMINPASSWORD: example - ME_CONFIG_MONGODB_URL: mongodb://root:example@mongo:27017/ - ME_CONFIG_BASICAUTH: false - - hello: - image: docker.yauk.tv/streamlit - restart: unless-stopped - - - minio: - image: quay.io/minio/minio - restart: unless-stopped - ports: - - "9000:9000" - volumes: - - /mnt/ssd/.minio:/data - command: server /data --console-address ":9001" - - registry: - image: registry:2 - restart: unless-stopped - volumes: - - /mnt/docker/registry:/var/lib/registry - - cdn: - image: node:slim - volumes: - - /mnt/docker/cdn:/app - entrypoint: sh -c - command: - - | - cd /app - cat <<"EOF" > server.js - const express = require('express'); - const cors = require('cors'); - const path = require('path'); - const fs = require('fs'); - const app = express(); - const PORT = 8000; - - app.use(cors()); - app.use(express.static(path.join(__dirname, 'node_modules'))); - - // 기본 라우트 - app.get('/', (req, res) => { - res.send('Hello, World! Use / to access files.'); - }); - - - app.get('/:filename', (req, res) => { - const filePath = path.join(__dirname, req.params.filename); - fs.access(filePath, fs.constants.F_OK, (err) => { - if (err) { - return res.status(404).send('File not found'); - } - res.sendFile(filePath); - }); - }); - app.listen(PORT, () => { console.log('Server is running on http://localhost:' + PORT); }); - EOF - - npm init -y - npm i express cors pretendard @picocss/pico - node server.js - - wg-easy: - image: ghcr.io/wg-easy/wg-easy - environment: - - LANG=ko - - WG_HOST=192.168.12.2 - - WEBUI_HOST=wg-easy - - PASSWORD_HASH='REDACTED' - - PORT=51821 - - WG_PORT=51820 - - WG_DEFAULT_DNS= - - WG_PERSISTENT_KEEPALIVE=25 - - WG_ALLOWED_IPS=10.8.0.0/24 - volumes: - - ~/.wg-easy:/etc/wireguard - ports: - - "51820:51820/udp" - restart: unless-stopped - cap_add: - - NET_ADMIN - - SYS_MODULE - sysctls: - - net.ipv4.ip_forward=1 - - net.ipv4.conf.all.src_valid_mark=1 \ No newline at end of file diff --git a/docker-compose/my.yml b/docker-compose/my.yml new file mode 100644 index 0000000..4c139fc --- /dev/null +++ b/docker-compose/my.yml @@ -0,0 +1,109 @@ +x-db: &db + restart: unless-stopped + networks: + - my_network + +x-defaults: &defaults + restart: unless-stopped + networks: + - my_network + stop_grace_period: 0s + +networks: + my_network: + external: true + +services: + nginx: + image: 'jc21/nginx-proxy-manager:latest' + <<: *defaults + ports: + - '80:80' # Public HTTP Port + - '443:443' # Public HTTPS Port + - '81:81' # Admin Web Port + environment: + # Mysql/Maria connection parameters: + DB_MYSQL_HOST: "mysql" + DB_MYSQL_PORT: 3306 + DB_MYSQL_USER: "npm" + DB_MYSQL_PASSWORD: "npm" + DB_MYSQL_NAME: "npm" + DISABLE_IPV6: 'true' + volumes: + - /mnt/docker/nginx:/data + - /mnt/docker/letsencrypt:/etc/letsencrypt + depends_on: + - mysql + + mongo-express: + image: mongo-express + <<: *defaults + environment: + ME_CONFIG_MONGODB_ADMINUSERNAME: root + ME_CONFIG_MONGODB_ADMINPASSWORD: example + ME_CONFIG_MONGODB_URL: mongodb://root:example@mongo:27017/ + ME_CONFIG_BASICAUTH: false + + hello: + image: jay817/streamlit + <<: *defaults + command: hello + + + cdn: + image: node:slim + <<: *defaults + volumes: + - /mnt/docker/cdn:/app + working_dir: /app + command: node server.js + + + mysql: + image: 'jc21/mariadb-aria:latest' + <<: *db + environment: + MYSQL_ROOT_PASSWORD: 'npm' + MYSQL_DATABASE: 'npm' + MYSQL_USER: 'npm' + MYSQL_PASSWORD: 'npm' + MARIADB_AUTO_UPGRADE: '1' + volumes: + - /mnt/docker/mysql:/var/lib/mysql + + redis: + image: redis/redis-stack:latest + <<: *db + ports: + - 6379:6379 + volumes: + - /mnt/docker/redis:/data + environment: + - REDIS_ARGS=--appendonly yes + + mongo: + image: mongo + <<: *db + ports: + - 27017:27017 + environment: + MONGO_INITDB_ROOT_USERNAME: root + MONGO_INITDB_ROOT_PASSWORD: example + volumes: + - /mnt/docker/mongodb:/data/db + - /mnt/docker/configdb:/data/configdb + + registry: + image: registry:2 + <<: *db + volumes: + - /mnt/docker/registry:/var/lib/registry + + # minio: + # image: quay.io/minio/minio + # <<: *db + # ports: + # - "9000:9000" + # volumes: + # - /mnt/ssd/.minio:/data + # command: server /data --console-address ":9001" diff --git a/docker-compose/nightly.yml b/docker-compose/nightly.yml new file mode 100644 index 0000000..a003838 --- /dev/null +++ b/docker-compose/nightly.yml @@ -0,0 +1,29 @@ +x-defaults: &defaults + restart: unless-stopped + networks: + - my_network + stop_grace_period: 0s + +networks: + my_network: + external: true + + +services: + watch: + image: python + container_name: watch + <<: *defaults + volumes: + - /mnt/docker/public/watch:/app + working_dir: /app + command: python app.py + + yauk-tv: + image: python + container_name: yauk-tv + <<: *defaults + volumes: + - /mnt/docker/public/yauk-tv:/app + working_dir: /app + command: python -m http.server \ No newline at end of file diff --git a/docker-compose/public.yml b/docker-compose/public.yml index 6ff7814..26e8aae 100644 --- a/docker-compose/public.yml +++ b/docker-compose/public.yml @@ -1,134 +1,28 @@ +x-defaults: &defaults + restart: unless-stopped + networks: + - my_network + stop_grace_period: 0s + environment: + - OPENAI_API_KEY=$OPENAI_API_KEY + networks: - default: - external: - name: my_network + my_network: + external: true services: mensa: image: python - restart: unless-stopped + container_name: mensa + <<: *defaults volumes: - - /mnt/docker/mensa:/app + - /mnt/docker/public/mensa:/app working_dir: /app - entrypoint: python -m http.server + entrypoint: python -m http.server 80 yauk-net: image: jay817/streamlit - restart: unless-stopped - entrypoint: bash -c - command: - - | - pip install redis openai - cat <<"EOF" > streamlit_app.py - import streamlit as st - st.set_page_config(page_title="오늘놀자", page_icon=":kr:", layout='wide') - import os, re, logging, uuid, json, time, redis, openai - - def render_equation(response): - response = re.sub(r'\\\[([^\]]+?)\\\]', r'$$\1$$', response) - response = re.sub(r'\\\(([^\)]+?)\\\)', r'$\1$', response) - return response - - - r = redis.Redis('redis', db=1) - st.html("""""") - - - logging.basicConfig( - level=logging.INFO, format='%(asctime)s - %(message)s', - handlers=[logging.FileHandler("app.log"), ] - ) - - - client = openai.OpenAI(api_key="$OPENAI_API_KEY") - - # visible page starts - - st.subheader('🕊️ 오늘놀자', divider='gray') - - # print history - - if "messages" not in st.session_state: - st.session_state.messages = [] - st.session_state["session_id"] = str(uuid.uuid4()) - - for message in st.session_state.messages: - with st.chat_message(message["role"]): - st.markdown(render_equation(message["content"])) - - # user prompt - if prompt := st.chat_input("Message ChatGTP"): - with st.chat_message("user"): - st.write(prompt) - st.session_state.messages.append({"role": "user", "content": prompt}) - logging.info(f"{st.session_state['session_id']} - User: {prompt}") - - - # generate reseponse - with st.chat_message("assistant"): - stream = client.chat.completions.create( - model="gpt-4o-mini", - messages=[{"role": msg["role"], "content": msg["content"]} - for msg in st.session_state.messages], - temperature=0, - stream=True, - ) - - response, buffer = "", "" - def wrapper(): - global response, buffer - for chunk in stream: - chunk = chunk.choices[0].delta.content - if chunk is not None: - response += chunk - buffer += chunk - if buffer.count("\\[") == buffer.count("\\]") and \ - buffer.count("\\(") == buffer.count("\\)") and \ - not buffer.endswith("\\"): - yield render_equation(buffer) - buffer = "" - with st.empty(): - st.write_stream(wrapper()) - if buffer: - st.write(render_equation(response)) - - - logging.info(f"{st.session_state['session_id']} - Model: {response}") - st.session_state.messages.append({"role": "assistant", "content": response}) - - r.rpush('yauk.net', json.dumps({ - 'timestamp': time.time(), - 'session_id': st.session_state['session_id'], - 'messages': st.session_state.messages, - })) - EOF - streamlit run streamlit_app.py + container_name: yauk-net + <<: *defaults + volumes: + - /mnt/docker/public/yauk-net:/app \ No newline at end of file