最近用OpenSIPS做了一个小型的类似VOS5000的服务,随着项目的推进,需要持续集成的部署方式,所以我把Opensips进行了Docker化。在OpenSIPS的Docker化过程中,也使用了MySQL的Docker化部署,把过程记录下来。
一、OpenSIPS的Docker化
1、Dockerfile的书写
通过Dokcerfile生成适合我们自己工程的Docker镜像,这里面有一个脚本
(待完善)
2、自定义通过环境变量更新cfg文件的脚本 update_cfg.sh
(待完善)
3、Docker Compose 启动服务
写yml文件,分为开发环境、测试环境和生成环境的文件,定义默认的端口和IP
(待完善)
一、Mysql8.0的Docker化启动
1、获取并启动 Mysql8.0的Docker
sudo docker pull docker.io/mysql/mysql-server:8.0
sudo docker run --name mysql8.0 -p 3306:3306 -v /mnt/mysql/datadir:/var/lib/mysql -v /mnt/mysql/conf.d:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root@2019 -d 18c55bf778f5
2、远程连接被拒绝问题
创建并授权opensips/opensipsrw
mysql> CREATE USER 'opensips'@'localhost' IDENTIFIED BY 'opensipsrw';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'opensips'@'localhost' WITH GRANT OPTION;
mysql> CREATE USER 'opensips'@'%' IDENTIFIED BY 'opensipsrw';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'opensips'@'%' WITH GRANT OPTION;
3、解决Navicat连接mysql8.0的错误“Authentication plugin 'caching_sha2_password' cannot be loaded”
这是mysql8.0的问题,可以通过下面的语句解决:
ALTER USER 'opensips'@'%' IDENTIFIED WITH mysql_native_password BY 'opensipsrw';
三、Opensips创建数据库
1、配置 etc/opensips/opensipsctlrc 文件,修改数据库的连接Host和用户名密码:
DBENGINE=MYSQL
## database port (PostgreSQL=5432 default; MYSQL=3306 default)
DBPORT=3306## database host
DBHOST=172.27.83.122## database name (for ORACLE this is TNS name)
DBNAME=opensips# database path used by dbtext, db_berkeley, or sqlite
DB_PATH="/usr/local/opensips/etc/opensips/dbtext"## database read/write user
DBRWUSER=opensips## password for database read/write user
DBRWPW="opensips"## engine type for the MySQL/MariaDB tabels (default InnoDB)
# MYSQL_ENGINE="MyISAM"## database super user (for ORACLE this is 'scheme-creator' user)
DBROOTUSER="opensips"
执行: sudo ./sbin/opensipsdbctl create
注: Enter character set name: 我选择的 latin1,后面又通过navicat改成了utf8,直接生成utf8不知道为啥不行