Browse Source

!70 新增 dockerfile 和 docker-compose

Merge pull request !70 from 小杰/feature_support_docker
master
blue 2 years ago
committed by Gitee
parent
commit
8c8cd4490b
No known key found for this signature in database GPG Key ID: 173E9B9CA92EEF8F
  1. 26
      im-docker-compose/README.md
  2. 27
      im-docker-compose/im-coturn/docker-compose.yml
  3. 99
      im-docker-compose/im-service/docker-compose.yml
  4. 28
      im-docker-compose/im-service/im-platform.env
  5. 4
      im-docker-compose/im-service/im-server.env
  6. 13
      im-platform/Dockerfile
  7. 13
      im-server/Dockerfile

26
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
```

27
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

99
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

28
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

4
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

13
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

13
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
Loading…
Cancel
Save