1. 部署mongo
- 数据卷
# 存数据
docker volume create yt-mongo_data
# 存配置文件
docker volume create yt-mongo_config
# 存日志
docker volume create yt-mongo_log
- 部署命令
docker run \
-d \
-p 27017:27017 \
--name yt-mongo \
--restart=always \
-v yt-mongo_data:/data/db \
-v yt-mongo_config:/etc \ (这条命令加上去就会出问题)
-v yt-mongo_log:/var/log/mongodb \
mongo
- Using a custom MongoDB configuration file(未掌握)
Linux下的默认配置文件位置/etc/mongod.conf
-d mongo:latest --config /etc/mongod.conf
configuration file content
注:配置文件中只需要规定 log文件的存放位置即可,数据库的存放位置默认为/data/db
,只需要挂载到数据卷即可
systemLog:
destination: file
path: "/var/log/mongodb/mongod.log"
logAppend: true
storage:
journal:
enabled: true
processManagement:
fork: true
net:
bindIp: 0.0.0.0
port: 27017
setParameter:
enableLocalhostAuthBypass: true
security:
authorization: disable // endable 开启 disable 关闭
- Where to Store Data
Linux默认/data/db
存数据库数据
-v yt-mongo_data:/data/db
/data/configdb
处理分片集群时需要使用
- 进入mongo容器,using the
mongosh
cli
docker exec -it yt-mongo mongosh
- 创建数据库用户
use test
db.createUser({ user:"root", pwd:"root", roles:["readWrite", "dbAdmin"] })
- Setting wiredTiger cache size limits
you will want to set the cache size to something appropriate, taking into account any other processes you may be running in the container which would also utilize memory
eg: you can configure the cache size to use 1.5GB as:
docker run --name some-mongo -d mongo --wiredTigerCacheSizeGB 1.5
2. 部署redis
- 数据卷
# 存放持久化数据
docker volume create yt-redis_data
# 存放日志
docker volume create yt-redis_log
# 存放配置
docker volume create yt-redis_config
- 部署命令
docker run \
--name yt-redis \
-d \
-p 6379:6379 \
-v yt-redis_config:/usr/local/etc/redis \
-v yt-redis_data:/data \
redis \
redis-server /usr/local/etc/redis/redis.conf --save 180 1 --loglevel warning
- start with persistent storage
持久化后的存放地址/data
-v yt-redis_data:/data
- use your own redis.conf
Where /myredis/conf/
is a local directory containing your redis.conf
file
docker run -v /myredis/conf:/usr/local/etc/redis --name myredis redis redis-server /usr/local/etc/redis/redis.conf
config content
bind 0.0.0.0
port 6379
- 进入redis容器,使用
docker exec -it yt-redis redis-cli
3. 部署MySQL
- 数据卷
# 存放持久化数据
docker volume create yt-mysql_data
# 存放日志
docker volume create yt-mysql_log
# 存放配置
docker volume create yt-mysql_config
- 部署命令
docker run \
-d \
-p 3306:3306 \
--name yt-mysql \
# 初始化root用户的密码
-e MYSQL_ROOT_PASSWORD=root \
-v yt-mysql_data:/var/lib/mysql \
-v yt-mysql_config:/etc/mysql/conf.d \
-v yt-mysql_log:/var/log/mysql \
mysql
- Using a custom MySQL configuration file
The default configuration for MySQL can be found in /etc/mysql/conf.d
yt-mysql_config/config-file.cnf
is the path and name of your custom configuration file
-v yt-mysql_config:/etc/mysql/conf.d \
config content
# Custom config should go here
!includedir /etc/mysql/conf.d/
[mysqld]
# 设置监听的IP地址和端口
bind-address = 0.0.0.0
port=3306
# 设置 MySQL 数据库的字符集
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
# 设置数据库数据的存放位置
datadir=/var/lib/mysql
# 设置 MySQL 数据库的默认引擎
default-storage-engine=INNODB
# 设置 MySQL 数据库的最大连接数
max_connections=200
# 设置 MySQL 数据库的日志位置
log_error=/var/log/mysql/error.log
# 设置 MySQL 数据库的临时文件夹位置
tmpdir=/tmp
# 设置 MySQL 数据库的缓存大小
key_buffer_size=32M
query_cache_size=64M
thread_cache_size=32
table_open_cache=2048
table_definition_cache=4096
sort_buffer_size=2M
read_buffer_size=2M
read_rnd_buffer_size=4M
join_buffer_size=8M
innodb_buffer_pool_size=2G
innodb_log_file_size=512M
innodb_flush_log_at_trx_commit=2
- where to dbData
By default, MySQL stores database files in/var/lib/mysql
-v yt-mysql_data:/var/lib/mysql \
- where to log
Log files are usually located at /var/log/mysql
-v yt-mysql_log:/var/log/mysql \
- 进入MySQL容器,使用
docker exec -it yt-mysql mysql -u root -p
- 创建用户并允许远程连接
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'username'@'%';
4. 部署flask
只涉及一个容器不需要使用Docker Compose
在服务器中创建一个code目录
从GitHub上克隆项目到code目录
打开项目文件夹,在该目录下创建文本文件 dockerfile,内容如下
# 指定基础镜像
FROM python:3.8.10
# 设置工作目录
WORKDIR /app
# 将项目下的requirements.txt文件复制到 /app目录
COPY ./requirements.txt .
# 执行命令pip install --no-cache-dir -r requirements.txt 安装项目依赖
RUN pip install --no-cache-dir -r requirements.txt
# 将Flask 项目复制到容器中的 /app 目录
COPY . .
# 容器向外暴露5000端口
EXPOSE 5000
# 在容器启动时运行 app.py 脚本
CMD [ "python", "app.py" ]
在dockerfile所在目录下,使用命令docker build -t webshell_ids .
构建镜像
到此镜像定制完毕,之后运行该镜像即可启动项目