committed by
Gitee
7 changed files with 210 additions and 0 deletions
@ -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 |
||||
|
``` |
||||
@ -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 |
||||
@ -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 |
||||
|
|
||||
@ -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 |
||||
|
|
||||
@ -0,0 +1,4 @@ |
|||||
|
spring_redis_host=im-redis |
||||
|
spring_redis_port=6379 |
||||
|
spring_redis_password=REDIS_PASSWORD |
||||
|
jwt_accessToken_secret=JWT_ACCESSTOKEN_SECRET |
||||
@ -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 |
||||
@ -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 |
||||
Loading…
Reference in new issue