找回密码
 立即注册
首页 业界区 业界 搭建docker虚拟机测试服

搭建docker虚拟机测试服

谲脾 2025-9-28 18:14:36
一、需求分析

优点:测试服与正式服环境隔离,配置简单,多个开发者可以共用一个测试数据库和redis
 
二、安装镜像

因为正式服是装了宝塔面板,所以直接在宝塔面板上安装docker。
因为需要的虚拟机linux要有完整的系统命令,docker安装镜像为 centos/systemd 
以特权模式创建容器,并把虚拟机内的 22,3306,6379端口映射到实体机的 22000,13306,16379端口
  1. docker run -itd --privileged=true -p 22000:22 -p 13306:3306 -p 16379:6379 --name mytest systemd:latest
复制代码
 
三、虚拟机内Linux配置和软件安装
  1. #配置yum为阿里云的源
  2. rm -rf /etc/yum.repos.d/*
  3. curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
  4. yum repolist
  5. #查看linux时区
  6. timedatectl
  7. <strong>#设置时区为上海(中国标准时间)</strong>
  8. sudo timedatectl set-timezone Asia/Shanghai
  9. timedatectl
  10. #虚拟机安装java
  11. java -version
  12. yum list java*jdk-devel
  13. yum install java-1.8.0-openjdk-devel -y
  14. #修改ls/ll显示的时间格式  2023/07/31 15:30:00
  15. vi ~/.bash_profile
  16. # 文件末尾添加
  17. export TIME_STYLE='+%Y/%m/%d %H:%M:%S'
  18. # 使配置立即生效
  19. source ~/.bash_profile
  20. #查看虚拟机的IP,通常是172.17.0.2
  21. ifconfig
  22. #查看运行程序的端口
  23. yum install -y net-tools
  24. netstat -nlpt
  25. <strong>#安装ssh</strong>
  26. yum install -y openssh-server
  27. # 编辑 SSH 配置文件
  28. vi /etc/ssh/sshd_config
  29. #启动和设置开机启动
  30. systemctl start sshd
  31. systemctl enable sshd
  32. systemctl status sshd
  33. #重置root密码(是从容器进来的,本来密码不知道)
  34. passwd root
  35. #在实体机中测试虚拟机中的端口连接
  36. ssh root@172.17.0.2
  37. exit
  38. <strong>#安装mysql</strong>
  39. #!注意 yum install -y mariadb-server 安装的是mysql5.5,版本很低
  40. #下载mysql源安装包
  41. yum install -y wget
  42. wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
  43. rpm -ivh mysql57-community-release-el7-11.noarch.rpm
  44. #--nogpgcheck    不校验数字签名
  45. yum -y install mysql-server --nogpgcheck
  46. #启动
  47. systemctl start mysqld
  48. systemctl enable mysqld
  49. systemctl status mysqld
  50. #MySQL 5.7 安装后会生成一个临时 root 密码:
  51. cat /var/log/mysqld.log | grep password
  52. mysql_secure_installation
  53. #输入上面查到的默认密码,设置新密码(至少8位,必须包含 大小写字母、数字、特殊字符)
  54. #进入mysql
  55. mysql -p'密码'
  56. show databases;
  57. #开放root用户远程登录
  58. UPDATE mysql.user SET Host='%' WHERE User='root' AND Host='localhost';
  59. FLUSH PRIVILEGES;
  60. quit<br>#注意,如果安装mysql后再修改linux系统时区,需要重启mysql
  61. <strong>#安装redis</strong>
  62. #Redis 不在默认的 CentOS 仓库中,需先添加 EPEL仓库
  63. yum install -y epel-release
  64. yum install -y redis
  65. systemctl start redis
  66. systemctl enable redis
  67. systemctl status redis
  68. #进入redis
  69. redis-cli
  70. SET hello world
  71. GET hello
  72. quit
  73. #开放外部访问  vi /etc/redis.conf
  74. # 注释掉bind(默认仅监听本地)
  75. # bind 127.0.0.1
  76. # 关闭保护模式
  77. protected-mode no
  78. # 设置密码
  79. requirepass 密码
  80. #然后重启redis
  81. systemctl restart redis
  82. <strong>#安装nginx</strong>
  83. yum install -y nginx
  84. systemctl start nginx
  85. systemctl enable nginx
  86. systemctl status nginx
  87. #nginx配置文件在/etc/nginx/nginx.conf
  88. #虚拟机中的nginx不需要https
  89. #此镜像中没有防火墙,不需要打开防火墙端口
  90. #firewall-cmd --permanent --add-port=22/tcp
  91. #firewall-cmd --permanent --add-port=3306/tcp
  92. #firewall-cmd --permanent --add-port=6379/tcp
  93. #firewall-cmd --permanent --add-port=80/tcp
  94. #firewall-cmd --reload
  95. #清理yum的硬盘空间
  96. yum clean all
复制代码
 
四、回到实体机中

测试端口和开放防火墙端口
  1. telnet 172.17.0.2 3306
  2. quit
  3. telnet 172.17.0.2 6379
  4. quit
  5. telnet 172.17.0.2 80
  6. quit
  7. #开放防火墙端口
  8. firewall-cmd --permanent --add-port=22000/tcp
  9. firewall-cmd --permanent --add-port=13306/tcp
  10. firewall-cmd --permanent --add-port=16379/tcp
  11. firewall-cmd --reload
复制代码
阿里云等的安全组,添加开放端口(最好指定IP)
#服务器配置系统hosts,把demo域名指向docker内网IP
  1. vi /etc/hosts
  2. 172.17.0.2 demo.batsing.com
复制代码
Nginx中配置vhost,将demo域名转发到域名自身
  1. server {
  2.     listen            80;
  3.     server_name        demo.batsing.com;
  4.     location / {
  5.         proxy_pass    http://demo.batsing.com;
  6.         proxy_set_header X-Real-IP $remote_addr;                                                   
  7.         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  8.         proxy_set_header Host $http_host;
  9.         proxy_set_header X-NginX-Proxy true;
  10.     }
  11. }
复制代码
#虚拟机中配置网站
#参考一般的网站配置即可
 
五、本地开发与测试

日常用 batsing.com:22000 登录测试服,更新代码重启等
本地开发测试,数据库连接远程的 batsing.com:13306 ,Redis连接远程的 batsing.com:16379
 

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册