linux(centos7)docker配置前后端分离项目环境-创新互联
1.更新yum包,并安装需要的软件包,yum-util 提供yum-config-manager功能,另两个是devicemapper驱动依赖
成都创新互联主要从事网站制作、网站设计、网页设计、企业做网站、公司建网站等业务。立足成都服务厦门,十载网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220yum -y upgrade
yum install -y yum-utils device-mapper-persistent-data lvm2
2.设置 yum 源(以下任选其一)
yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo(中央仓库)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo(阿里仓库)
备注:安装前一定卸载干净之前安装过的docker(没安装过不用执行以下命令)
yum remove docker docker-common docker-selinux docker-engine
3.查看docker可用版本
yum list docker-ce --showduplicates | sort -r
4.选择版本安装docker:yum install docker-ce-版本号
yum -y install docker-ce-17.12.1.ce-1.el7.centos
5.启动docker
systemctl start docker
二、安装 mysql1.拉取mysql5.7镜像(mysql版本自行选择)
docker pull mysql:5.7
2.查看拉取的mysql镜像,确保镜像拉取成功并且存在
docker images
3.创建宿主机映射目录 (容器文件映射到当前宿主机,不用直接操作mysql容器的配置文件)
mkdir -p /root/mysql/data /root/mysql/logs /root/mysql/conf
进到root/mysql/conf下创建mysql配置文件(修改mysql配置时,改当前创建的文件即可)
cd /root/mysql/conf
touch my.cnf
4.创建mysql容器,将数据,日志,配置文件映射到宿主机
-v命令是将容器内部配置文件挂载到宿主机 (后续修改配置文件直接修改绑定的宿主机文件,不用进入到容器内部修改,因为很麻烦,肯定没有我们操作宿主机快)
-p命令是将容器内的端口映射到宿主机(这样就能通过宿主机ip(就是服务器公网ip)+映射的这个端口直接跟当前容器通信,后续再聊容器相互之间的通信)
这两个基本命令,容器比较常用,后续还会用到,就不再阐述了
docker run -p 3306:3306 --name mysql -v /root/mysql/conf:/etc/mysql/conf.d -v /root/mysql/logs:/logs -v /root/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=设置的密码 -d mysql:5.7
5.用工具测试连接
如果连接不上(确保防火墙是否端口开放,确保服务器安全策略组端口是否开放)
三、安装redis1.拉取redis镜像
docker pull redis
2.创建挂载目录及配置文件
mkdir -p /root/redis/data
cd /root/redis
touch redis.conf
3.编辑redis配置文件(复制以下内容到redis.conf,注意修改文件内redis启动密码)
protected-mode no
port 6379
tcp-backlog 511
#设置redis密码
requirepass 你的密码
timeout 0
tcp-keepalive 300
daemonize no
supervised no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile ""
databases 30
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir ./
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-disable-tcp-nodelay no
replica-priority 100
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
appendonly yes
appendfilename "appendonly.aof"
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000
slowlog-max-len 128
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
4.启动redis容器
--log日志处理
redis redis-server /etc/redis/redis.conf 加载配置文件启动
--appendonly yes 开启redis持久化
docker run --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 --name redis -v /root/redis/redis.conf:/etc/redis/redis.conf -v /root/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes
5.用工具测试连接
如果连接不上(确保防火墙是否端口开放,确保服务器安全策略组端口是否开放)
三、安装nginx(重中之重,一定仔细一步步走)1.拉取镜像并创建nginx宿主机挂载目录
docker pull nginx
# 创建挂载目录
mkdir -p /root/nginx/conf
mkdir -p /root/nginx/log
mkdir -p /root/nginx/html
2.复制启动容器内的配置文件到宿主机,并删除容器重新设置参数再启动
# 生成容器
docker run --name nginx -p 80:80 -d nginx
# 将容器nginx.conf文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /root/nginx/conf/nginx.conf
# 将容器conf.d文件夹下内容复制到宿主机
docker cp nginx:/etc/nginx/conf.d /root/nginx/conf/conf.d
# 将容器中的html文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html /root/nginx/
# 删除正在运行的nginx容器
docker rm -f nginx
#设置好参数重新运行
docker run -p 80:80 -p 443:443 --name nginx -v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /root/nginx/conf/conf.d:/etc/nginx/conf.d -v /root/nginx/log:/var/log/nginx -v /root/nginx/html:/usr/share/nginx/html -d nginx:latest
3.至此通过宿主机ip(安全策略组以及防火墙80和443端口一定要开放)已经能访问到nginx页面。后面再聊通过配置文件部署前端dist以及代理后端接口
四、配置远程访问docker的密钥,方便后续通过IDEA docker插件来操作docker(方便nginx挂载,不用次次命令到容器内部操作)不配置密钥直接开放端口访问的话,服务器会被攻击的体无完肤,说多了都是泪原文地址:https://blog.csdn.net/qq_2453548221/article/details/126260893原文作者写的非常详尽,大家可以先去看看(以下是搬运的原文)
1.一定细心一步步看清楚走,否则最后连接不上!!!#1.先在/usr/local目录下创建个文件夹,这里取名叫ca,然后进入ca文件夹中
mkdir -p /usr/local/ca
cd /usr/local/ca
#2.执行下面的命令,需要输入密码,自由指定,两次输入保持一致并记住即可.
openssl genrsa -aes256 -out ca-key.pem 4096
#3.根据提示分别输入国家,省份,城市,组织,等一系列信息(可以随便输,无所谓的其实)
openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem
#4.生成server-key.pem,输入下面命令敲回车即可.
openssl genrsa -out server-key.pem 4096
#5.把下面的$Host换成你自己服务器外网的IP或者域名:比如:openssl req -subj “/CN=192.168.1.0” -sha256…
openssl req -subj "/CN=$HOST" -sha256 -new -key server-key.pem -out server.csr
#6.配置白名单,也就是你接下来要允许那些ip可以连接到服务器的docker,因为已经是ssl连接,所以我推荐配置0.0.0.0,也就是所有Ip都可以连接(但只有拥有证书的才可以连接成功),这样配置好之后公司其他人也可以使用.如果你不想这样,那你可以配置Ip,用逗号分隔开.下面的$Host依旧是你服务器外网的IP或者域名,请自行替换.(这里如果你使用的是服务器Ip的话,请将前面的DNS换成IP,否则配下来连接还是不会成功,如果你使用的是服务器域名,那么就用DNS就可以了)
echo subjectAltName = DNS:$HOST,IP:0.0.0.0 >>extfile.cnf
#7.执行下面语句:
echo extendedKeyUsage = serverAuth >>extfile.cnf
#8.执行下面语句,然后输入前面设置过的密码,用以生成ca-key.
openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem \-CAcreateserial -out server-cert.pem -extfile extfile.cnf
#9.生成客户端所需的key.pem,依旧在该服务器下执行下面命令,到时候把生成好的几个公钥私钥拷出去即可.
openssl genrsa -out key.pem 4096
openssl req -subj '/CN=client' -new -key key.pem -out client.csr
echo extendedKeyUsage = clientAuth >>extfile.cnf
#10.生成cert.pem,需要输入前面设置的密码:
openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem \-CAcreateserial -out cert.pem -extfile extfile.cnf
rm -v client.csr server.csr
#11.修改权限:
chmod -v 0400 ca-key.pem key.pem server-key.pem
chmod -v 0444 ca.pem server-cert.pem cert.pem
#12.归集服务器证书:
cp server-*.pem /etc/docker/
cp ca.pem /etc/docker/
#13.修改docker配置:
vi /lib/systemd/system/docker.service
将ExecStart=/usr/bin/dockerd
替换为:
ExecStart=/usr/bin/dockerd --tlsverify --tlscacert=/etc/docker/ca.pem --tlscert=/etc/docker/server-cert.pem --tlskey=/etc/docker/server-key.pem -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock
#14.重新加载daemon并重启docker
systemctl daemon-reload
systemctl restart docker
#15.然后使用工具比如winscp,或者xshell,把你当前所在的/usr/local/ca文件夹里的拷贝到你本地电脑的某个文件夹里
2.先安全策略组和防火墙开放2376端口(如果防火墙是关闭状态则不用处理防火墙)再idea docker插件选择密钥文件夹连接,现在就不怕被攻击了
下载docker插件,然后配置
最终就能可视化docker的镜像还有容器
以上就能通过插件直接挂载nginx的前端dist文件目录,上图左侧是宿主机目录,右侧是容器内部目录(dist挂载目录宿主机随便配置,容器内的地址必须在 /usr/share/nginx/ 下面才能生效)
未完待续敬请期待!有不明白的同学请留言,一定给你安排明白你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
新闻名称:linux(centos7)docker配置前后端分离项目环境-创新互联
文章来源:http://azwzsj.com/article/pcohj.html