From 00bdce0055f6ee122e2706e21fabec1130fadd55 Mon Sep 17 00:00:00 2001 From: jef Date: Tue, 2 Jul 2024 16:16:46 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BC=80=E5=8F=91=20Dockerfile=20=E5=92=8C=20d?= =?UTF-8?q?ocker-compose.yml=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: jef --- im-docker-compose/README.md | 26 +++++ .../im-coturn/docker-compose.yml | 27 +++++ .../im-service/docker-compose.yml | 99 +++++++++++++++++++ im-docker-compose/im-service/im-platform.env | 28 ++++++ im-docker-compose/im-service/im-server.env | 4 + im-platform/Dockerfile | 13 +++ im-server/Dockerfile | 13 +++ 7 files changed, 210 insertions(+) create mode 100644 im-docker-compose/README.md create mode 100644 im-docker-compose/im-coturn/docker-compose.yml create mode 100644 im-docker-compose/im-service/docker-compose.yml create mode 100644 im-docker-compose/im-service/im-platform.env create mode 100644 im-docker-compose/im-service/im-server.env create mode 100644 im-platform/Dockerfile create mode 100644 im-server/Dockerfile diff --git a/im-docker-compose/README.md b/im-docker-compose/README.md new file mode 100644 index 0000000..a658ac7 --- /dev/null +++ b/im-docker-compose/README.md @@ -0,0 +1,26 @@ +# docker 构建和部署指南 + +## 配置 + +请配置以下文件的挂载目录、端口号、环境变量、账户信息等。 + +- box-im/im-docker-compose/im-coturn/docker-compose.yml +- box-im/im-docker-compose/im-service/docker-compose.yml +- box-im/im-docker-compose/im-coturn/im-platform.env +- box-im/im-docker-compose/im-coturn/im-server.env + +## 构建 + +可以在部署的目标服务器上在下面两个目录下构建出 im-server 和 im-platform 的 docker images. + +- box-im/im-server/Dockerfile +- box-im/im-platform/Dockerfile + +## 部署 + +在部署的目标服务器上通过 docker-compose 启动所有容器, + +```bash +docker-compose -f im-docker-compose/im-coturn/docker-compose.yml up -d +docker-compose -f im-docker-compose/im-service/docker-compose.yml up -d +``` diff --git a/im-docker-compose/im-coturn/docker-compose.yml b/im-docker-compose/im-coturn/docker-compose.yml new file mode 100644 index 0000000..7be5ce8 --- /dev/null +++ b/im-docker-compose/im-coturn/docker-compose.yml @@ -0,0 +1,27 @@ + +version: "3" + +services: + im-coturn: + container_name: im-coturn + image: coturn/coturn:4.6.2-alpine + command: turnserver -v -a -c /etc/coturn/conf/coturn.conf + restart: always + ports: + - PORT_COTURN_LISTEN_OS:3478 + - PORT_COTURN_LISTEN_OS:3478/udp + - PORT_COTURN_LISTEN_TLS_OS:5349 + - PORT_COTURN_LISTEN_TLS_OS:5349/udp + - PORT_COTURN_RELAY_BEGIN_OS-PORT_COTURN_RELAY_END_OS:PORT_COTURN_RELAY_BEGIN_OS-PORT_COTURN_RELAY_END_OS/udp + # network_mode: "host" + environment: + - DETECT_EXTERNAL_IP=yes + - DETECT_RELAY_IP=yes + volumes: + - deploydir/docker_volumes_data/coturn/conf:/etc/coturn/conf + - deploydir/docker_volumes_data/coturn/certs:/etc/coturn/ssl + - deploydir/docker_volumes_data/coturn/log:/var/log/coturn/ +networks: + default: + external: + name: turn-network diff --git a/im-docker-compose/im-service/docker-compose.yml b/im-docker-compose/im-service/docker-compose.yml new file mode 100644 index 0000000..51e5e90 --- /dev/null +++ b/im-docker-compose/im-service/docker-compose.yml @@ -0,0 +1,99 @@ + +version: "3" + +services: + im-mysql: + container_name: im-mysql + image: mysql:5.7 + command: --default-authentication-plugin=mysql_native_password + restart: always + environment: + - TZ=Asia/Shanghai + - MYSQL_ROOT_PASSWORD=MYSQL_ROOT_USER_PASSWORD + - MYSQL_ROOT_HOST=% + - MYSQL_IM_USERNAME=MYSQL_USERNAME + - MYSQL_IM_PASSWORD=MYSQL_PASSWORD + volumes: + - deploydir/docker_volumes_data/mysql/data:/var/lib/mysql + - deploydir/docker_volumes_data/mysql/mysql.conf.d:/etc/mysql/mysql.conf.d + + im-redis: + container_name: im-redis + image: redis:6-alpine + command: redis-server --requirepass REDIS_PASSWORD --appendonly yes --appendfsync everysec --auto-aof-rewrite-percentage 100 --auto-aof-rewrite-min-size 100mb + restart: always + # ports: + # - "127.0.0.1:6379:6379" + volumes: + - deploydir/docker_volumes_data/redis/data:/data + + im-minio: + container_name: im-minio + image: bitnami/minio:2024 + restart: always + # ports: + # - 9001:9001 + # - 9002:9002 + privileged: true + environment: + - MINIO_SKIP_CLIENT=yes + - MINIO_API_PORT_NUMBER=9001 + - MINIO_CONSOLE_PORT_NUMBER=9002 + # - MINIO_OPTS="--console-address :9002 --address :9001" + # - MINIO_DOMAIN=im_minio:9001 + - MINIO_DATA_DIR=/data/minio + - MINIO_ROOT_USER=MINIO_USERNAME + - MINIO_ROOT_PASSWORD=MINIO_PASSWORD + volumes: + - deploydir/docker_volumes_data/minio/data:/data/minio + + im-nginx: + container_name: im-nginx + image: openresty/openresty:1.21.4.1-0-alpine + restart: always + ports: + - PORT_NGINX_HTTP_OS:80 + - PORT_NGINX_HTTPS_OS:443 + - PORT_NGINX_WSS_OS:81 + depends_on: + im-platform: + condition: service_started + im-server: + condition: service_started + volumes: + - deploydir/docker_volumes_data/nginx/data/conf:/etc/nginx ## configs + - deploydir/docker_volumes_data/nginx/data/certs:/etc/certs ## cert files + - deploydir/docker_volumes_data/nginx/data/web:/usr/share/nginx ## web + + im-platform: + container_name: im-platform + image: im-platform:latest + restart: always + depends_on: + im-mysql: + condition: service_started + im-redis: + condition: service_started + im-minio: + condition: service_started + env_file: + - im-platform.env + + im-server: + container_name: im-server + image: im-server:latest + restart: always + depends_on: + im-mysql: + condition: service_started + im-redis: + condition: service_started + im-minio: + condition: service_started + env_file: + - im-server.env +networks: + default: + external: + name: im-network + diff --git a/im-docker-compose/im-service/im-platform.env b/im-docker-compose/im-service/im-platform.env new file mode 100644 index 0000000..5438781 --- /dev/null +++ b/im-docker-compose/im-service/im-platform.env @@ -0,0 +1,28 @@ +spring_datasource_username=MYSQL_USERNAME +spring_datasource_password=MYSQL_PASSWORD +spring_redis_password=REDIS_PASSWORD + +spring_datasource_url=jdbc:mysql://im-mysql:3306/box-im?useSSL=false&useUnicode=true&characterEncoding=utf-8 +spring_datasource_password=MYSQL_PASSWORD +spring_redis_host=im-redis +spring_redis_port=6379 +spring_redis_password=REDIS_PASSWORD + +minio_accessKey=MINIO_USERNAME +minio_secretKey=MINIO_PASSWORD +minio_public=https://IM_DOMAIN:PORT_NGINX_HTTPS_EXTERNAL/file +minio_endpoint=http://im-minio:9001 + +ICE_SERVER_1_URL=TURN_DOMAIN:PORT_COTURN_LISTEN_EXTERNAL +ICE_SERVER_1_USERNAME=TURN_USERNAME +ICE_SERVER_1_CREDENTIAL=TURN_PASSWORD + +ICE_SERVER_2_URL=TURN_DOMAIN:PORT_COTURN_LISTEN_EXTERNAL +ICE_SERVER_2_USERNAME=TURN_USERNAME +ICE_SERVER_2_CREDENTIAL=TURN_PASSWORD + +jwt_accessToken_secret=JWT_ACCESSTOKEN_SECRET +jwt_accessToken_expireIn=JWT_ACCESSTOKEN_EXPIREDIN +jwt_refreshToken_secret=JWT_REFRESHTOKEN_SECRET +jwt_refreshToken_expireIn=JWT_REFRESHTOKEN_EXPIREDIN + diff --git a/im-docker-compose/im-service/im-server.env b/im-docker-compose/im-service/im-server.env new file mode 100644 index 0000000..6a9f063 --- /dev/null +++ b/im-docker-compose/im-service/im-server.env @@ -0,0 +1,4 @@ +spring_redis_host=im-redis +spring_redis_port=6379 +spring_redis_password=REDIS_PASSWORD +jwt_accessToken_secret=JWT_ACCESSTOKEN_SECRET diff --git a/im-platform/Dockerfile b/im-platform/Dockerfile new file mode 100644 index 0000000..5dcdcd2 --- /dev/null +++ b/im-platform/Dockerfile @@ -0,0 +1,13 @@ +FROM openjdk:8-jdk-alpine + +ENV APP_FILE im-platform.jar +ENV APP_HOME /data/boxim + +WORKDIR $APP_HOME + +COPY ./dist/$APP_FILE $APP_HOME/ + +EXPOSE 8888 +EXPOSE 9001 + +CMD java -jar $APP_HOME/$APP_FILE --spring.profiles.active=prod diff --git a/im-server/Dockerfile b/im-server/Dockerfile new file mode 100644 index 0000000..7731603 --- /dev/null +++ b/im-server/Dockerfile @@ -0,0 +1,13 @@ +FROM openjdk:8-jdk-alpine + +ENV APP_FILE im-server.jar +ENV APP_HOME /data/boxim + +WORKDIR $APP_HOME + +COPY ./dist/$APP_FILE $APP_HOME/ + +EXPOSE 8877 +EXPOSE 8878 + +CMD java -jar $APP_HOME/$APP_FILE --spring.profiles.active=prod