可怜我没有备份啊,怎么会突然就整个数据库没有了?昨天访问网站还好好的..... 也没搜到别人这个问题怎么解决
https://github.com/fecshop/yii2_fecshop_docker/blob/master/docker-compose.yml
mongodb:
image: mongo:3.7
restart: always
environment:
- MONGO_DATA_DIR=/data/db
- MONGO_LOG_DIR=/data/logs
volumes:
- ./db/mongodb/data:/data/db
- ./db/mongodb/example_db:/data/example_db
- ./db/mongodb/logs:/data/logs
- ./db/mongodb/etc/mongod.conf:/etc/mongod.conf
ports:
- 27017:27017
networks:
- code-network
你在宿主主机中查看一下 ./db/mongodb/data
是否有文件?
/var/lib/mongo22 里面是否有数据?先回答我这个。
然后,更改下配置试试
将./db/mongodb/etc/mongod.conf
文件中的配置dbPath: /var/lib/mongo22
改成 dbPath: /data/db
然后重启docker试试
docker-compose stop
docker-compose up -d
贴一下你的 docker-compose.yml 文件内容
你是否更改了这个文件的内容docker-compose.yml?
另外:https://github.com/fecshop/yii2_fecshop_docker 你是用的默认的,还是阿里云的那个yml文件构建的?
@Fecshop #12楼 version: "2" services: web:
image: nginx:latest
ports:
- "80:80"
- "443:443"
restart: always
volumes:
- ./app:/www/web
- ./services/web/nginx/conf:/etc/nginx
- ./services/web/nginx/logs:/www/web_logs
- /etc/letsencrypt/live/www.cathaychile.com/fullchain.pem:/etc/letsencrypt /live/www.cathaychile.com/fullchain.pem
- /etc/letsencrypt/live/www.cathaychile.com/privkey.pem:/etc/letsencrypt/l ive/www.cathaychile.com/privkey.pem
networks:
- code-network
depends_on:
- php
mysql:
image: mysql:5.7
volumes:
- ./db/mysql/data:/var/lib/mysql
- ./db/mysql/example_db:/var/example_db
- ./db/mysql/conf.d:/etc/mysql/conf.d
ports:
- "3306:3306"
restart: always
environment:
- MYSQL_ROOT_PASSWORD=huaxia0305
networks:
- code-network
php:
build:
context: ./services/php/docker/
restart: always
volumes:
- ./app:/www/web
- ./services/php/etc/php7.1.13.ini:/usr/local/etc/php/conf.d/php7.1.13.ini
depends_on:
- mongodb
- mysql
networks:
- code-network
mongodb:
image: mongo:3.7
restart: always
environment:
- MONGO_DATA_DIR=/data/db
- MONGO_LOG_DIR=/data/logs
volumes:
- ./db/mongodb/data:/data/db
- ./db/mongodb/example_db:/data/example_db
- ./db/mongodb/logs:/data/logs
- ./db/mongodb/etc/mongod.conf:/etc/mongod.conf
ports:
- 27017:27017
networks:
- code-network
xunsearch:
image: hightman/xunsearch:latest
restart: always
volumes:
- ./db/xunsearch/data:/usr/local/xunsearch/data
networks:
- code-network
redis:
image: redis:4.0
restart: always
ports:
- "6379:6379"
environment:
REDIS_PASS_FILE: /run/secrets/redis-password
command: [
"bash", "-c",
'
docker-entrypoint.sh
--requirepass "$$(cat $$REDIS_PASS_FILE)"
'
]
volumes:
- ./db/redis/etc/redis.conf:/usr/local/etc/redis/redis.conf
- ./db/redis/data:/data
- ./db/redis/etc/redis-password:/run/secrets/redis-password
networks:
- code-network
ssh1:
build:
context: ./services/ssh/docker/
networks:
- code-network
ports:
- "2222:22"
networks: code-network:
driver: bridge
宿主主机的文件路径 ./db/mongodb/data
这里面的内容,你是不是动过啊?mongodb的数据就是存储在这里的
或者,你是否昨天执行了什么操作,进行了删除?
你大致回忆一下,干了那些事情,可能导致这个问题?
服务器啊,cenos7,安装这个贴子安装。https://github.com/fecshop/yii2_fecshop_docker 上次数据库没了我是重新导入测试数据的。 mongo mongodb:27017/fecshop --quiet /data/example_db/mongo-fecshop_test-20170419-065157.js
我也清楚为什么会这样
docker compose 配置docker部分也没有问题:
https://gist.github.com/wesleybliss/29d4cce863f5964a3eb73c42501d99e4
https://github.com/fecshop/yii2_fecshop_docker/blob/master/docker-compose.yml
比较一下,是没有问题的,你自己好好琢磨琢磨,
我去google 查看了下资料 docker mongodb data lost
,也没有类似的问题
"_id" : ObjectId("5b304ddb79620f990b69f9b9"),
"BitCoin" : "3GKioTFrCFYcTmZR4DXPGatTXXp6Ugcq79",
"eMail" : "backupservice@protonmail.com",
"Exchange" : "https://localbitcoins.com",
"Solution" : "Your Database is downloaded and backed up on our secured servers. To recover your lost data: Send 0.4 BTC to our BitCoin Address and Contact us by eMail with your server IP Address and a Proof of Payment. Any eMail without your server IP Address and a Proof of Payment together will be ignored. You can apply for a backup summary within 12 hours. Then we will delete the backup. You are welcome!"
}
我知道了,mongodb的默认配置是没有加载配置文件
而对于docker mongodb的配置
- ./db/mongodb/etc/mongod.conf:/etc/mongod.conf
docker 中的mongodb没有加载这个配置文件
执行
ps -xa | grep mongod
我的手动安装的mongodb显示 /usr/bin/mongod -f /etc/mongod.conf
而docker安装的mongodb显示
mongod --bind_ip_all
这说明没有加载挂载过来的配置文件,进而导致的问题
对于挂载到mongodb的配置文件:https://github.com/fecshop/yii2_fecshop_docker/blob/master/db/mongodb/etc/mongod.conf
如果mongodb启动加载这个就没有问题了,因为里面有绑定ip的配置
net:
port: 27017
bindIp: php # Listen to local interface only, comment to listen on all interfaces.
稍等,我整一下,让容器中的mongodb加载这个启动文件
https://github.com/fecshop/yii2_fecshop_docker/blob/master/db/mongodb/etc/mongod.conf
不是robomongo的问题,是没有加载配置导致的问题,进而没有绑定ip,进而都可以放问mognodb,而mongodb默认没有设置用户名和密码,进而可以被远程连接,进而给你清空了数据库。
直接 mongo ip地址
就可以连接,是这个问题造成的
将docker-compose.yml文件中的配置:
mongodb:
image: mongo:3.7
restart: always
environment:
- MONGO_DATA_DIR=/data/db
- MONGO_LOG_DIR=/data/logs
volumes:
- ./db/mongodb/data:/data/db
- ./db/mongodb/example_db:/data/example_db
- ./db/mongodb/logs:/data/logs
- ./db/mongodb/etc/mongod.conf:/etc/mongod.conf
ports:
- 27017:27017
networks:
- code-network
改成:
mongodb:
image: mongo:latest
restart: always
environment:
- MONGO_DATA_DIR=/data/db
- MONGO_LOG_DIR=/data/logs
volumes:
- ./db/mongodb/data:/data/db
- ./db/mongodb/example_db:/data/example_db
- ./db/mongodb/logs:/data/logs
command: ["mongod", "--bind_ip", "php"]
ports:
- 27017:27017
networks:
- code-network
然后重启启动
docker-compose stop
docker-compose up -d
然后你可以进入到mongodb容器中,检查一下
ps -xa | grep mongod
如果现实 1 ? Ssl 0:01 mongod --bind_ip php
就没有问题了。
绑定ip后,外部访问将会报错:
[root@iZ942k2d5ezZ mongo]# mongo 144.202.52.147
MongoDB shell version v3.6.1
connecting to: mongodb://144.202.52.147:27017/test
2018-06-25T16:49:39.178+0800 W NETWORK [thread1] Failed to connect to 144.202.52.147:27017, in(checking socket for error after poll), reason: Connection refused
2018-06-25T16:49:39.179+0800 E QUERY [thread1] Error: couldn't connect to server 144.202.52.147:27017, connection attempt failed :
connect@src/mongo/shell/mongo.js:251:13
@(connect):1:6
exception: connect failed
[root@iZ942k2d5ezZ mongo]#
之前的那种配置,我测试是可以直接远程访问的,更改会就无法连接了
我的是拨号ip,我增加了一个管理员了。 https://www.cnblogs.com/zengguowang/p/5573947.html
1.是内网ip,按照上面写的,就是 php
,docker host会映射到相应的ip的,应该没有问题的,你试试,应该可以的
2.添加mongodb的用户名密码:
然后,fecshop配置一下mongodb用户名和密码
@Fecshop [[#31楼](#comment31)](#comment31) 是可以,但是RoboMongo 连不上了。
绑定ip对应的php后面加上,ssh1
,因为mongo连接的ssh,对应的容器名字是ssh1
https://github.com/fecshop/yii2_fecshop_docker#gui访问数据库
在fecshop docker,ssh容器的配置如下:
ssh1:
build:
context: ./services/ssh/docker/
networks:
- code-network
ports:
- "2222:22"
因此,mongo
将绑定的ip中加上:ssh1
就可以了
mongodb:
image: mongo:3.7
restart: always
environment:
- MONGO_DATA_DIR=/data/db
- MONGO_LOG_DIR=/data/logs
volumes:
- ./db/mongodb/data:/data/db
- ./db/mongodb/example_db:/data/example_db
- ./db/mongodb/logs:/data/logs
command: ["mongod", "--bind_ip", "php,ssh1"]
ports:
- 27017:27017
networks:
- code-network
https://github.com/fecshop/yii2_fecshop_docker/blob/master/docker-compose.yml
除了web(nginx),其他的开放的端口都关掉,也就是ports
,就可以了
这个我之前搞混了(docker了解少,最近多看了一下资料),容器之间的通信不需要开放端口,ports设置的是对外端口,譬如nginx的