云服务器配置 docker java mysql mongodb redis nginx 环境
磁盘挂载
fdisk -l #查看磁盘列表
mkfs.ext4 /dev/vdb #格式化磁盘
mount /dev/vdb /data #挂载磁盘在/data
echo '/dev/vdb /data ext4 defaults,nofail 0 1'>> /etc/fstab # 启动服务器自动挂载
mount -a #校验自动挂载脚本
df -h #查看磁盘挂载后信息
docker
安装 docker
yum update #更新系统包
yum install -y yum-utils device-mapper-persistent-data lvm2 #安装yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo #为yum源添加docker仓库位置
yum install docker-ce #安装docker
systemctl start docker #启动docker
systemctl stop docker #暂停docker
mv /var/lib/docker /data/docker # 修改Docker镜像的存放位置
ln -s /data/docker /var/lib/docker #建立软连接
echo '{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
'>> /etc/docker/daemon.json # 镜像下载代理
拉取 Java 镜像
docker pull java
拉取 MySql 镜像
docker pull mysql #拉取 MySql
docker run -p 3306:3306 --name mysql \ # run 运行容器 -p 将容器的3306端口映射到主机的3306端口 --name 容器运行的名字
--restart=always \ # 挂断自动重新启动
-v /etc/localtime:/etc/localtime \ # 将主机本地时间夹挂在到容器
-v /data/mysql/log:/var/log/mysql \ # 将日志文件夹挂载到主机
-v /data/mysql/data:/var/lib/mysql \ # 将数据文件夹挂载到主机
-v /data/mysql/mysql-files:/var/lib/mysql-files \ # 将数据文件夹挂载到主机
-v /data/mysql/conf:/etc/mysql \ # 将配置文件夹挂在到主机
-e MYSQL_ROOT_PASSWORD=xiujingmysql. \ # 初始化root用户的密码
-d mysql # -d 后台运行
docker exec -it mysql /bin/bash # 进入Docker容器内部的bash
拉取 Mongodb 镜像
docker pull mongo #拉取 mongodb
docker run -p 27017:27017 --name mongo \ # run 运行容器 -p 将容器的27017端口映射到主机的27017端口 --name 容器运行的名字
--restart=always \ # 挂断自动重新启动
-v /etc/localtime:/etc/localtime \ # 将主机本地时间夹挂在到容器
-v /data/mongodb/db:/data/db \ # 将数据文件夹挂载到主机
-v /data/mongodb/configdb:/data/configdb \ # 将数据库配置文件挂载到主机
-v /data/mongodb/initdb:/docker-entrypoint-initdb.d # 通过/docker-entrypoint-initdb.d/将更复杂的用户设置显式留给用户 当容器首次启动时它会执行/docker-entrypoint-initdb.d 目录下的sh 和js脚本 。 以脚本字母顺序执行
-e MONGO_INITDB_ROOT_USERNAME=admin \ # 设置admin数据库账户名称 如果使用了此项,则不需要 --auth 参数
-e MONGO_INITDB_ROOT_PASSWORD=admin \ # 设置admin数据库账户密码 如果使用了此项,则不需要 --auth 参数
-d mongo \ # -d 后台运行
--auth # --auth 需要密码才能访问容器服务 docker exec -it mongo mongo admin # 进入mongo
db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'}]}); #创建一个名为 admin,密码为 123456 的用户。
db.auth('admin', '123456') # 尝试使用上面创建的用户信息进行连接。
拉取 Redis 镜像
docker pull redis #拉取 redis
docker run -p 6379:6379 --name redis \ # run 运行容器 -p 将容器的6379端口映射到主机的6379端口 --name 容器运行的名字
--restart=always \ # 挂断自动重新启动
-v /etc/localtime:/etc/localtime \ # 将主机本地时间夹挂在到容器
-v /data/redis:/data/redis \ # 将数据文件夹挂载到主机
-d redis \ # -d 后台运行
--requirepass "123456" # 设置密码123456
拉取 Nginx 镜像
docker pull nginx #拉取 nginx
docker run -p 80:80 -p 443:443 --name nginx -d nginx # 运行容器
docker container cp nginx:/etc/nginx /data/nginx/ #拷贝容器配置
docker rm -f nginx # 删除容器
nginx 配置文件
user nginx;
worker_processes 1;
error_log /var/log/nginx/error_log.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
gzip on; #开启gzip
gzip_disable "msie6"; #IE6不使用gzip
gzip_vary on; #设置为on会在Header里增加 "Vary: Accept-Encoding"
gzip_proxied any; #代理结果数据的压缩
gzip_comp_level 6; #gzip压缩比(1~9),越小压缩效果越差,但是越大处理越慢,所以一般取中间值
gzip_buffers 16 8k; #获取多少内存用于缓存压缩结果
gzip_http_version 1.1; #识别http协议的版本
gzip_min_length 1k; #设置允许压缩的页面最小字节数,超过1k的文件会被压缩
gzip_types application/javascript text/css; #对特定的MIME类型生效,js和css文件会被压缩
include /etc/nginx/conf.d/*.conf;
server {
#nginx同时开启http和https
listen 80 default backlog=2048;
listen 443 ssl;
server_name ysf.djtlpay.com;
ssl_certificate /ssl/1_ysf.djtlpay.com_bundle.crt;
ssl_certificate_key /ssl/2_ysf.djtlpay.com.key;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
}
运行 nginx
docker run -p 80:80 -p 443:443 --name nginx \ # run 运行容器 -p 将容器的80,443端口映射到主机的80,443端口 --name 容器运行的名字
--restart=always \
-v /etc/localtime:/etc/localtime \ # 将主机本地时间夹挂在到容器
-v /data/nginx/html:/usr/share/nginx/html \ # nginx 静态资源
-v /data/nginx/logs:/var/log/nginx \ # 将日志文件夹挂载到主机
-v /data/nginx/conf:/etc/nginx \ # 将配置文件夹挂在到主机
-v /data/nginx/conf/ssl:/ssl \ # 将证书文件夹挂在到主机
-d nginx #
拉取Jenkins镜像:
docker pull jenkins/jenkins:lts # 拉取 jenkins
docker run -p 8080:8080 -p 50000:50000 --name jenkins \ # run 运行容器 -p 将容器的80,443端口映射到主机的8080,50000端口 --name 容器运行的名字
-u root \ # 运行的用户为root
-v /etc/localtime:/etc/localtime \ # 将主机本地时间夹挂在到容器
-v /data/jenkins_home:/var/jenkins_home \ # 将jenkins_home文件夹挂在到主机
-e JAVA_OPTS=-Duser.timezone=Asia/Shanghai \ #设置jenkins运行环境时区
-d jenkins/jenkins:lts # -d 后台运行
Docker 开启远程API
- 用vi编辑器修改docker.service文件
#需要修改的部分:
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
#修改后的部分:
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
Docker 常用命令
systemctl start docker #启动docker
systemtctl enable docker #将docker服务设为开机启动
systemctl stop docker #停止容器
systemctl restart docker #重启docker服务
docker images # 列出镜像
docker rmi --name # 删除镜像 -f 强制删除
docker ps # 列出容器 -a 所有
docker start --name # 启动容器
docker stop --name # 停止容器
docker restart --name # 重启docker容器
docker rm --name # 删除容器 -f 强制删除
docker stats -a # 查看所有容器情况
docker system df # 查看Docker磁盘使用情况
docker exec -it --name /bin/bash #进入Docker容器内部的bash
docker cp 主机文件 容器名称:容器路径 #复制文件到docker容器中
docker logs --name #查看docker镜像日志
docker rm $(docker ps -a -q) # 删除所有容器 -f 强制删除
docker rmi $(docker images -a -q) # 删除所有镜像 -f 强制删除
docker rm -f `docker ps -a | grep -vE 'mysql|nginx|redis|jenkins' | awk '{print $1}'` # 删除mysql|nginx|redis|jenkins非容器 -f 强制删除
docker rmi -f `docker images | grep none | awk '{print $3}'` # 删除镜像none镜像 -f 强制删除
docker-compose
安装 docker-compose
# 下载Docker Compose
curl -L https://get.daocloud.io/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
# 修改该文件的权限为可执行
chmod +x /usr/local/bin/docker-compose
# 查看是否已经安装成功
docker-compose --version
使用Docker Compose的步骤
- 使用Dockerfile定义应用程序环境,一般需要修改初始镜像行为时才需要使用;
- 使用docker-compose.yml定义需要部署的应用程序服务,以便执行脚本一次性部署;
- 使用docker-compose up命令将所有应用服务一次性部署起来。
docker-compose.yml常用命令
# 指定运行的镜像名称
image: name:version
# 配置容器名称
container_name: name
# 指定宿主机和容器的端口映射
ports:
- 3306:3306
# 将宿主机的文件或目录挂载到容器中
volumes:
- /etc/localtime:/etc/localtime
- /data/mysql/log:/var/log/mysql
- /data/mysql/data:/var/lib/mysql
- /data/mysql/conf:/etc/mysql
- /data/mysql/mysql-files:/var/lib/mysql-files
# 配置环境变量
environment:
- MYSQL_ROOT_PASSWORD=xiujingmysql.
# 连接其他容器的服务
links:
- db:database #可以以database为域名访问服务名称为db的容器
# 挂断自动重新启动
restart: always
# 指定容器执行命令
command: redis-server --requirepass xiujingredis.
Docker Compose常用命令
# 构建、创建、启动相关容器
docker-compose up -d # -d表示在后台运行
# 停止所有相关容器
docker-compose stop
# 删除容器文件
docker-compose rm -f # -f 强制删除
# 重启容器
docker-compose restart
# 列出所有容器信息
docker-compose ps
# 查看容器日志
docker-compose logs
使用Docker Compose 部署应用
编写docker-compose.yml文件
version: '3'
services:
# 指定服务名称
nginx:
# 指定服务使用的镜像
image: nginx
# 指定容器名称
container_name: nginx
# 指定服务运行的端口
ports:
- 80:80
- 443:443
# 指定容器中需要挂载的文件
volumes:
- /etc/localtime:/etc/localtime
# 挂断自动重新启动
restart: always
# 指定容器的环境变量
environment:
- MYSQL_ROOT_PASSWORD=xiujingmysql.
# 指定服务名称
mysql:
# 指定服务使用的镜像
image: mysql
# 指定容器名称
container_name: mysql
# 指定服务运行的端口
ports:
- 13306:3306
# 指定容器中需要挂载的文件
volumes:
- /etc/localtime:/etc/localtime
- /data/mysql/log:/var/log/mysql
- /data/mysql/data:/var/lib/mysql
- /data/mysql/mysql-files:/var/lib/mysql-files
- /data/mysql/conf:/etc/mysql
# 挂断自动重新启动
restart: always
# 指定容器的环境变量
environment:
- MYSQL_ROOT_PASSWORD=xiujingmysql.
# 指定服务名称
redis:
# 指定服务使用的镜像
image: redis
# 指定容器名称
container_name: redis
# 指定服务运行的端口
ports:
- 16379:6379
# 指定容器中需要挂载的文件
volumes:
- /etc/localtime:/etc/localtime
- /data/redis:/data/redis
# 挂断自动重新启动
restart: always
# 指定容器执行命令
command: redis-server --requirepass xiujingredis.
# 指定服务名称
mongo:
# 指定服务使用的镜像
image: mongo
# 指定容器名称
container_name: mongo
# 指定服务运行的端口
ports:
- 27017:27017
# 指定容器中需要挂载的文件
volumes:
- /etc/localtime:/etc/localtime
- /data/mongodb/db:/data/db
- /data/mongodb/configdb:/data/configdb
- /data/mongodb/initdb:/docker-entrypoint-initdb.d
# 挂断自动重新启动
restart: always
# 指定容器的环境变量
environment:
- AUTH=yes
- MONGO_INITDB_ROOT_USERNAME=admin
- MONGO_INITDB_ROOT_PASSWORD=admin
# 指定服务名称
jenkins:
# 指定服务使用的镜像
image: jenkins
# 指定容器名称
container_name: jenkins
# 指定服务运行的端口
ports:
- 8080:8080
- 50000:50000
# 指定容器中需要挂载的文件
volumes:
- /etc/localtime:/etc/localtime
- /data/jenkins_home:/var/jenkins_home
# 挂断自动重新启动
restart: always
# 指定容器的环境变量
environment:
- JAVA_OPTS=-Duser.timezone=Asia/Shanghai
# 指定容器运行的用户为root
user:
root
运行Docker Compose命令启动所有服务
docker-compose up -d
GitHub:https://github.com/burningmyself/burningmyself.github.io/blob/master/docs/docker/docker-compose.md#docker%E5%92%8Cdocker-compose-%E9%85%8D%E7%BD%AE-mysql-mongodb-redis-nginx-jenkins-%E7%8E%AF%E5%A2%83
云服务器配置 docker java mysql mongodb redis nginx 环境的更多相关文章
- Docker运行Mysql,Redis,SpringBoot项目
Docker运行Mysql,Redis,SpringBoot项目 1.docker运行mysql 1.1拉取镜像 1.2启动容器 1.3进入容器 1.4开启mysql 1.5设置远程连接 1.6查看版 ...
- Docker 小记 — MySQL 与 Redis 配置
前言 本篇随笔是继 "Docker Engine" 与 "Compose & Swarm" 之后的一个实例补充,初衷是记录测试环境中的一次 MySQL ...
- 使用docker安装mysql和redis
本文介绍在linux下使用docker安装mysql和redis. 原文地址:代码汇个人博客 http://www.codehui.net/info/59.html 测试环境:centos7.6,do ...
- 数据库们~MySQL~MongoDB~Redis
mysql基础 mysql进阶 python操作mysql MongoDB Redis
- Scrapy连接到各类数据库(SQLite,Mysql,Mongodb,Redis)
如何使用scrapy连接到(SQLite,Mysql,Mongodb,Redis)数据库,并把爬取的数据存储到相应的数据库中. 一.SQLite 1.修改pipelines.py文件加入如下代码 # ...
- docker学习笔记-05:Docker安装mysql和redis
一.安装mysql 1.docker hub 上查找mysql镜像 docker search mysql 2.从docker hub (使用阿里云加速器)拉取mysql镜像到本地标签为5.6 doc ...
- Centos7.2 安装docker、mysql和redis
环境信息 Docker是什么? Docker就是一个平台,这个平台具备开发.发布和运行应用程序的功能,在项目生命周期中,我们可以运用Docker实现快速交付.测试和部署.Docker通过将运行环境打包 ...
- 阿里云上安装mysql步骤/ 阿里云ECS搭建Java+mysql+tomcat环境
使用阿里云ECS挺长一段时间了.这两天碰巧朋友小白让我一步一步教他在ECS上搭建Java+mysql+tomcat环境,所以把在这里把步骤在这简单整理了一下,以便需要的人查阅. 我购买的阿里云服务器系 ...
- docker 创建mysql和redis
1 镜像加速 创建docker 目录 sudo mkdir -p /etc/docker 镜像加速: sudo tee /etc/docker/daemon.json <<-'E ...
随机推荐
- Spring Boot (一) 校验表单重复提交
一.前言 在某些情况下,由于网速慢,用户操作有误(连续点击两下提交按钮),页面卡顿等原因,可能会出现表单数据重复提交造成数据库保存多条重复数据. 存在如上问题可以交给前端解决,判断多长时间内不能再次点 ...
- Redis面试题详解:哨兵+复制+事务+集群+持久化等
Redis主要有哪些功能? 1.哨兵(Sentinel)和复制(Replication) Redis服务器毫无征兆的罢工是个麻烦事,如何保证备份的机器是原始服务器的完整备份呢?这时候就需要哨兵和复制. ...
- 【Java实例】使用Thumbnailator生成缩略图(缩放、旋转、裁剪、水印)
1 需求 表哥需要给儿子报名考试,系统要求上传不超过30KB的图片,而现在的手机随手一拍就是几MB的,怎么弄一个才30KB的图片呢? 一个简单的办法是在电脑上把图片缩小,然后截屏小图片,但现在的电脑屏 ...
- NLog日志框架使用探究-2
目录 前言 自定义参数 日志输出方式 文件 网络传输 数据库 科学使用 参考文档 前言 在一年前,我写过一篇关于NLog入门文章<NLog日志框架使用探究-1>,文章简单的介绍了Nlog的 ...
- 国内开源C# WPF控件库Panuon.UI.Silver推荐
国内优秀的WPF开源控件库,Panuon.UI的优化版本.一个漂亮的.使用样式与附加属性的WPF UI控件库,值得向大家推荐使用与学习. 今天站长(Dotnet9,站长网址:https://dotne ...
- 成为高手前必懂的TCP干货【华为云技术分享】
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/detai ...
- 挑战10个最难的Java面试题(附答案)【下】
查看挑战10个最难的Java面试题(附答案)[上] 在本文中,我们将从初学者和高级别进行提问, 这对新手和具有多年 Java 开发经验的高级开发人员同样有益. 关于Java序列化的10个面试问题 大多 ...
- 浏览器url访问tomcat出现错误 java.lang.NoSuchMethodError解决方法
一般该类错误: 找不到方法或找不到类, 都是maven pom 仓库依赖的问题,有时是 因为缺少该依赖类,可以考虑添加相关依赖: 有时因为依赖冲突, 可以到 maven 的仓库下面把 有关该类的包 全 ...
- MySQL必知必会(创建计算字段(field))
#字段(field)基本上和列(column)的意思相同 SELECT Concat(vend_name, ' (', vend_country, ')') FROM vendors ORDER BY ...
- 数据库Oracle的子查询练习
1.写一个查询显示与 Zlotkey 的 在同一部门的雇员的 last name和 hire date,结果中不包括 Zlotkey --1.写一个查询显示与 Zlotkey 的 在同一部门的雇员的 ...