搭建docker虚拟机测试服

一、需求分析

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

 

二、安装镜像

因为正式服是装了宝塔面板,所以直接在宝塔面板上安装docker。

因为需要的虚拟机linux要有完整的系统命令,docker安装镜像为 centos/systemd 

以特权模式创建容器,并把虚拟机内的 22,3306,6379端口映射到实体机的 22000,13306,16379端口

docker run -itd --privileged=true -p 22000:22 -p 13306:3306 -p 16379:6379 --name mytest systemd:latest

 

三、虚拟机内Linux配置和软件安装

#配置yum为阿里云的源 rm -rf /etc/yum.repos.d/* curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo yum repolist   #查看linux时区 timedatectl #设置时区为上海(中国标准时间) sudo timedatectl set-timezone Asia/Shanghai timedatectl  #虚拟机安装java java -version yum list java*jdk-devel yum install java-1.8.0-openjdk-devel -y  #修改ls/ll显示的时间格式  2023/07/31 15:30:00 vi ~/.bash_profile # 文件末尾添加 export TIME_STYLE='+%Y/%m/%d %H:%M:%S' # 使配置立即生效 source ~/.bash_profile  #查看虚拟机的IP,通常是172.17.0.2 ifconfig #查看运行程序的端口 yum install -y net-tools netstat -nlpt  #安装ssh yum install -y openssh-server # 编辑 SSH 配置文件 vi /etc/ssh/sshd_config #启动和设置开机启动 systemctl start sshd systemctl enable sshd systemctl status sshd #重置root密码(是从容器进来的,本来密码不知道) passwd root #在实体机中测试虚拟机中的端口连接 ssh root@172.17.0.2 exit   #安装mysql #!注意 yum install -y mariadb-server 安装的是mysql5.5,版本很低 #下载mysql源安装包 yum install -y wget wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm rpm -ivh mysql57-community-release-el7-11.noarch.rpm #--nogpgcheck    不校验数字签名 yum -y install mysql-server --nogpgcheck #启动 systemctl start mysqld systemctl enable mysqld systemctl status mysqld #MySQL 5.7 安装后会生成一个临时 root 密码: cat /var/log/mysqld.log | grep password mysql_secure_installation #输入上面查到的默认密码,设置新密码(至少8位,必须包含 大小写字母、数字、特殊字符) #进入mysql mysql -p'密码' show databases; #开放root用户远程登录 UPDATE mysql.user SET Host='%' WHERE User='root' AND Host='localhost'; FLUSH PRIVILEGES; quit   #安装redis #Redis 不在默认的 CentOS 仓库中,需先添加 EPEL仓库 yum install -y epel-release yum install -y redis systemctl start redis systemctl enable redis systemctl status redis #进入redis redis-cli SET hello world GET hello quit  #开放外部访问  vi /etc/redis.conf # 注释掉bind(默认仅监听本地) # bind 127.0.0.1 # 关闭保护模式 protected-mode no # 设置密码 requirepass 密码 #然后重启redis systemctl restart redis    #安装nginx yum install -y nginx systemctl start nginx systemctl enable nginx systemctl status nginx #nginx配置文件在/etc/nginx/nginx.conf #虚拟机中的nginx不需要https   #此镜像中没有防火墙,不需要打开防火墙端口 #firewall-cmd --permanent --add-port=22/tcp #firewall-cmd --permanent --add-port=3306/tcp #firewall-cmd --permanent --add-port=6379/tcp #firewall-cmd --permanent --add-port=80/tcp #firewall-cmd --reload   #清理yum的硬盘空间 yum clean all

 

四、回到实体机中

测试端口和开放防火墙端口

telnet 172.17.0.2 3306 quit telnet 172.17.0.2 6379 quit telnet 172.17.0.2 80 quit   #开放防火墙端口 firewall-cmd --permanent --add-port=22000/tcp firewall-cmd --permanent --add-port=13306/tcp firewall-cmd --permanent --add-port=16379/tcp firewall-cmd --reload

阿里云等的安全组,添加开放端口(最好指定IP)

#服务器配置系统hosts,把demo域名指向docker内网IP

vi /etc/hosts 172.17.0.2 demo.batsing.com

Nginx中配置vhost,将demo域名转发到域名自身

server {     listen            80;     server_name        demo.batsing.com;     location / {         proxy_pass    http://demo.batsing.com;         proxy_set_header X-Real-IP $remote_addr;                                                            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;         proxy_set_header Host $http_host;         proxy_set_header X-NginX-Proxy true;     } }

#虚拟机中配置网站
#参考一般的网站配置即可

 

五、本地开发与测试

日常用 batsing.com:22000 登录测试服,更新代码重启等

本地开发测试,数据库连接远程的 batsing.com:13306 ,Redis连接远程的 batsing.com:16379

 

发表评论

评论已关闭。

相关文章