简介:mysql,redis(单节点),consul(单节点),nginx,在docker内。springboot不在docker内,也就是在docker宿主机器上。
docker官网:https://docs.docker.com/engine/install/centos/
docker仓库:https://hub.docker.com/_/mysql?tab=description
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
sudo systemctl start docker

sudo systemctl enable docker


sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://rn2ij708.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
docker run -p 3369:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0
#进入mysql bin目录
docker exec -it mysql /bin/bash
#登录mysql
mysql -u root -p
#切换数据库
use mysql
#修改账号host
update user set host = '%' where user = 'root';
#修改账号密码
alter user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
#查看用户当前信息
select user,host,plugin from user;
#刷新
flush privileges;
#进入docker容器内
docker exec -it mysql /bin/bash
# 查找Docker内,MySQL配置文件my.cnf的位置
mysql --help | grep my.cnf
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf
#查找数据文件位置 exit 退出docker容器以后
docker inspect mysql
"Mounts": [
{
"Type": "volume",
"Name": "89586be25ba94bb049e72271fbc59d51741920781ed9e29e4dc20c7db90a59fc",
"Source": "/var/lib/docker/volumes/89586be25ba94bb049e72271fbc59d51741920781ed9e29e4dc20c7db90a59fc/_data",
"Destination": "/var/lib/mysql",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
],
docker exec -it mysql bash
配置文件在
/etc/mysql/my.cnf
拷贝文件到之指定目录
docker cp mysql:/etc/mysql/my.cnf /home/mysql/conf
# 删除临时容器
docker rm -f mysql

docker run --restart=always \
-p 3369:3306 --name mysql \
-v /home/mysql/data:/var/lib/mysql \
-v /home/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-v /home/mysql/log:/var/log/mysql \
-v /home/mysql/mysql-files:/var/lib/mysql-files \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:8.0
--name:为容器指定一个名字
-p:指定端口映射,格式为:主机(宿主)端口:容器端口
-d:后台运行容器,并返回容器 id
#配置文件目录 和 数据目录
注意:docker redis 默认无redis.conf 文件,如果需要,自行去下载
mkdir -p /home/docker/redis/conf && mkdir -p /home/docker/redis/data
#准备配置文件
cd /home/docker/redis/conf
wget https://raw.githubusercontent.com/antirez/redis/6.2.2/redis.conf
#运行
docker run -p 6379:6379 --name redis \
-v /home/docker/redis/conf/redis.conf:/etc/redis/redis.conf \
-v /home/docker/redis/data:/data \
--restart=always \
--privileged=true \
-d redis:6.2.2 /etc/redis/redis.conf --appendonly yes
参数解释
--restart=always -> 开机启动容器,容器异常自动重启
-d -> 以守护进程的方式启动容器
--privileged=true -> 提升容器内权限
-p 6379:6379 -> 绑定宿主机端口
-v /home/docker/redis/conf/redis.conf:/etc/redis/redis.conf -> 映射配置文件
-v /home/docker/redis/data:/data -> 映射数据目录
--name redis -> 指定容器名称
--appendonly yes -> 开启数据持久化
如果搞不懂挂载目录,可以像安装mysql 先默认安装,然后查看目录。
#安装
docker run -p 6379:6379 --name redis -d redis:6.2.2 redis-server
#查看
docker inspect redis
"Mounts": [
{
"Type": "volume",
"Name": "ffef00095809f501fe4b7c0835820e6bff3752274bfda4b5dff548f5711da1be",
"Source": "/var/lib/docker/volumes/ffef00095809f501fe4b7c0835820e6bff3752274bfda4b5dff548f5711da1be/_data",
"Destination": "/data",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
],
#创建临时容器
docker run --name nginx -p 80:80 -d nginx:1.20.0
#进入nginx目录
docker exec -it nginx bash
#查看nginx.cnf
cat /etc/nginx/nginx.conf

从这个配置文件可以看出
nginx的日志文件在 /var/log/nginx 目录下
很重要的一点 最后一行 引入了 /etc/nginx/conf.d/ 文件下所有的配置文件
通过查看default.conf 文件的信息 默认的页面路径 /usr/share/nginx/html
#创建挂载目录
mkdir -p /home/docker/nginx/conf
#然后将nginx的一些配置信息 copy到刚创建的目录中去
docker cp nginx:/etc/nginx/nginx.conf /home/docker/nginx
docker cp nginx:/etc/nginx/conf.d/default.conf /home/docker/nginx/conf
# 删除临时容器
docker rm -f nginx
#重新安装容器
docker run --name nginx -p 80:80 -p 443:443 \
--restart=always \
-v /home/docker/nginx/html:/usr/share/nginx/html \
-v /home/docker/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /home/docker/nginx/logs:/var/log/nginx \
-v /home/docker/nginx/conf:/etc/nginx/conf.d \
-v /home/docker/nginx/cert:/etc/nginx/cert \
-d nginx:1.20.0
注:
1.nginx反向代理 不可以在使用127.0.0.1或者localhost访问宿主机器服务。可以使用ifconfig查看docker监听的ip。然后替代127.0.0.1。
docker run -d -p 8500:8500 --restart=always --name=consul consul:1.10.2 agent -server -bootstrap -ui -node=consul-node1 -client='0.0.0.0'
-d: 后台运行容器,并返回容器ID;
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
-name consul 指定容器名称,自定义
consul:1.10.2 指定镜像, 镜像名:标签名
agent: 表示启动 Agent 进程。
server:表示启动 Consul Server 模式。
client:表示启动 Consul Cilent 模式。
bootstrap:表示这个节点是 Server-Leader ,每个数据中心只能运行一台服务器。
技术角度上讲 Leader 是通过 Raft 算法选举的,但是集群第一次启动时需要一个引导
Leader,在引导群集后,建议不要使用此标志。
docker pull rabbitmq:management
#rabbitmq:management (镜像配有控制台)。
#创建挂载目录 mkdir...
docker run --restart=always \
-p 5673:5672 -p 15673:15672 --name rabbitmq \
-v /home/rabbitmq/data:/var/lib/rabbitmq \
-v /home/rabbitmq/conf:/etc/rabbitmq \
-v /home/rabbitmq/log:/var/log/rabbitmq \
-d rabbitmq
#进入docker rabbitmq
docker exec -it rabbitmq bash
#开启控制台
rabbitmq-plugins enable rabbitmq_management
#guest 不支持远程访问,最好添加一个用户管理
#如果使用阿里云或者腾讯云 记得开放15673端口
#创建账号
rabbitmqctl add_user admin admin
#授权角色
rabbitmqctl set_user_tags admin administrator
#添加权限 成功输出 Setting permissions for user "admin" in vhost "/" ...
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
docker exec -it mysql /bin/bash
docker rmi -f 镜像名:删除镜像
docker start 容器名/容器id:启动容器
docker stop 容器名/容器id:停止容器
docker ps :查看运行的容器
docker ps -a:查看所用容器(已运行、已停止的都有)
docker rm -f 容器名/容器id:删除容器
docker exec -it 容器名/容器id bash:进入容器
docker logs 镜像名:常看日志
docker images 查看本地镜像
我正在尝试使用ruby和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我
我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..
最近,当我启动我的Rails服务器时,我收到了一长串警告。虽然它不影响我的应用程序,但我想知道如何解决这些警告。我的估计是imagemagick以某种方式被调用了两次?当我在警告前后检查我的git日志时。我想知道如何解决这个问题。-bcrypt-ruby(3.1.2)-better_errors(1.0.1)+bcrypt(3.1.7)+bcrypt-ruby(3.1.5)-bcrypt(>=3.1.3)+better_errors(1.1.0)bcrypt和imagemagick有关系吗?/Users/rbchris/.rbenv/versions/2.0.0-p247/lib/ru
在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo
我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b
您如何在Rails中的实时服务器上进行有效调试,无论是在测试版/生产服务器上?我试过直接在服务器上修改文件,然后重启应用,但是修改好像没有生效,或者需要很长时间(缓存?)我也试过在本地做“脚本/服务器生产”,但是那很慢另一种选择是编码和部署,但效率很低。有人对他们如何有效地做到这一点有任何见解吗? 最佳答案 我会回答你的问题,即使我不同意这种热修补服务器代码的方式:)首先,你真的确定你已经重启了服务器吗?您可以通过跟踪日志文件来检查它。您更改的代码显示的View可能会被缓存。缓存页面位于tmp/cache文件夹下。您可以尝试手动删除
1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里
作为新的阿里云用户,您可以50免费试用多种优惠,价值高达1,700美元(或8,500美元)。这将让您了解和体验阿里云平台上提供的一系列产品和服务。如果您以个人身份注册免费试用,您将获得价值1,700美元的优惠。但是,如果您是注册公司,您可以选择企业免费试用,提交基本信息通过企业实名注册验证,即可开始价值$8,500的免费试用!本教程介绍了如何设置您的帐户并使用您的免费试用版。关于免费试用在我们开始此试用之前,您还必须遵守以下条款和条件才能访问您的免费试用:只有在一年内创建的账户才有资格获得阿里云免费试用。通过此免费试用优惠,用户可以免费试用免费试用活动页面上列出的每种产品一次。如果您有多个帐
基础版云数据库RDS的产品系列包括基础版、高可用版、集群版、三节点企业版,本文介绍基础版实例的相关信息。RDS基础版实例也称为单机版实例,只有单个数据库节点,计算与存储分离,性价比超高。说明RDS基础版实例只有一个数据库节点,没有备节点作为热备份,因此当该节点意外宕机或者执行重启实例、变更配置、版本升级等任务时,会出现较长时间的不可用。如果业务对数据库的可用性要求较高,不建议使用基础版实例,可选择其他系列(如高可用版),部分基础版实例也支持升级为高可用版。基础版与高可用版的对比拓扑图如下所示。优势 性能由于不提供备节点,主节点不会因为实时的数据库复制而产生额外的性能开销,因此基础版的性能相对于
require"socket"server="irc.rizon.net"port="6667"nick="RubyIRCBot"channel="#0x40"s=TCPSocket.open(server,port)s.print("USERTesting",0)s.print("NICK#{nick}",0)s.print("JOIN#{channel}",0)这个IRC机器人没有连接到IRC服务器,我做错了什么? 最佳答案 失败并显示此消息::irc.shakeababy.net461*USER:Notenoughparame