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