实践Docker部署
Posted gaochenglong1
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实践Docker部署相关的知识,希望对你有一定的参考价值。
实践Docker部署
一键Docker安装
可以使用如下两种命令之一,注意容器内东八区时间配置
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
或者
curl -sSL https://get.daocloud.io/docker | sh
常用服务1
mysql
创建并更改配置文件 /home/dockerFiles/mysql/conf/my.cnf
命令创建并执行该容器
[mysqld]
default_authentication_plugin=mysql_native_password
创建数据库不指定默认UTF8,默认latin-1
character_set_server=utf8
大小写不敏感,默认0为敏感
lower_case_table_names=1
配置不使用only full group by
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
最大连接数
max_connections=9999
docker pull mysql:8.0
docker run --name mysql
-p 3306:3306
-v /home/dockerFiles/mysql/conf:/etc/mysql
-v /home/dockerFiles/mysql/logs:/var/log/mysql
-v /home/dockerFiles/mysql/data:/var/lib/mysql-files
-v /etc/localtime:/etc/localtime
-e MYSQL_ROOT_PASSWORD=123456
-d --restart=always mysql:8.0
▶ 如果容器被删除,重新运行即可,数据本地储存
▶ 如果配置文件配置,在 conf/ 下创建 my.cnf【Windows中为my.ini】
Redis
创建 /home/dockerFiles/redis/redis.conf 文件,官网下载
修改关键配置信息,如下
命令创建并执行该容器
注释掉这部分,这是限制redis只能本地访问
bind 127.0.0.1
默认yes,开启保护模式,限制为本地访问
protected-mode no
默认no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程,改为yes会使配置文件方式启动redis失败
daemonize no
默认no,改redis持久化(可选)
appendonly yes
配置 redis 访问密码
requirepass 你的访问密码!!!
docker pull redis:7.0.0
docker run --name redis
-p 6379:6379
-v /home/dockerFiles/redis/redis.conf:/etc/redis/redis.conf
-v /home/dockerFiles/redis/data:/data
-v /etc/localtime:/etc/localtime
-d --restart=always redis:7.0.0
redis-server /etc/redis/redis.conf
–appendonly yes
▶ 后两句含义:①指定配置文件启动,默认为无配置文件启动,②启动数据持久化
▶ 最后使用版本:6.2.6
nginx(单配置)
创建 /home/dockerFiles/nginx/nginx.conf 文件
命令创建并执行该容器
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
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;
## default
server
listen 80;
server_name localhost;
location /
root html;
index index.html index.htm;
## SSL + Proxy
server
listen 80;
if ($server_port !~ 443)
rewrite ^(/.*)$ https://$host:443$1 permanent;
listen 443 ssl;
server_name xx.xx.xx;
ssl_certificate cert/xx.xx.xx_chain.crt;
ssl_certificate_key cert/xx.xx.xx_key.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location /
client_max_body_size 50m;
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://172.17.0.1:8090;
docker pull nginx:1.21.6
docker run --name nginx
-p 10080:80 -p 10443:443
-v /home/dockerFiles/nginx/nginx.conf:/etc/nginx/nginx.conf
-v /home/dockerFiles/nginx/logs:/var/log/nginx
-v /home/dockerFiles/nginx/html:/etc/nginx/html
-v /home/dockerFiles/nginx/cert:/etc/nginx/cert
-v /etc/localtime:/etc/localtime
-d --restart=always nginx:1.21.6
▶ 做本地 HTTP 反向代理服务,不做 HTTP 服务
Nginx(多配置)
命令创建并执行该容器
创建 /home/dockerFiles/nginx/conf.d/ 文件夹,此文件夹为主文件 includ 的分支文件 *.conf
创建默认文件内容如下 default.conf
docker run --name nginx
-p 10080:80 -p 10443:443
-v /home/dockerFiles/nginx/conf.d:/etc/nginx/conf.d
-v /home/dockerFiles/nginx/logs:/var/log/nginx
-v /home/dockerFiles/nginx/html:/etc/nginx/html
-v /home/dockerFiles/nginx/cert:/etc/nginx/cert
-v /etc/localtime:/etc/localtime
-d --restart=always nginx:1.21.6
server
listen 80;
server_name localhost;
location /
root /usr/share/nginx/html;
index index.html index.htm;
▶ 根据实际情况调整 gzip、cert 全域名证书等
常用服务2
MinIO
命令创建并执行该容器
启动命令(有控制台的新版本)
docker pull minio/minio
docker run --name minio
-v /home/dockerFiles/minio/data:/data
-v /etc/localtime:/etc/localtime
-p 9000:9000 -p 9001:9001
-e “MINIO_ROOT_USER=admin”
-e “MINIO_ROOT_PASSWORD=asdfghjkl”
-d --restart=always quay.io/minio/minio
server /data --console-address “:9001”
启动命令(无控制台的旧版本)
docker pull minio/minio:
docker run --name minio
-p 9000:9000
-v /home/dockerFiles/minio/data:/data
-v /home/dockerFiles/minio/config:/root/.minio
-v /etc/localtime:/etc/localtime
-e “MINIO_ACCESS_KEY=admin”
-e “MINIO_SECRET_KEY=asdfghjkl”
-d --restart=always minio/minio server
/data
Gogs
创建 /home/dockerFiles/gogs 文件夹
命令创建并执行该容器
启动命令,再使用 ip:13000 请求就可以执行图像界面安装
docker pull gogs/gogs:0.12.4
docker run --name=gogs
-p 10022:22 -p 13000:3000
-v /home/dockerFiles/gogs:/data
-v /etc/localtime:/etc/localtime
-d --restart=always gogs/gogs
项目 填写 说明
数据库 实际情况 全部填写
应用基本设置 应用名称 -
域名 公网IP/域名 1.1.1.1
SSH端口 映射后的端口号 10022
HTTP端口号 映射前的端口号 3000
应用URL 访问地址 http://1.1.1.1:13000
可选设置 禁止用户注册
启用登录访问限制 可以后期通过挂载的配置文件更改
git/gogs/custom/conf 目录下的 app.ini文件
禁止用户注册
DISABLE_REGISTRATION = true
启用登录访问限制
REQUIRE_SIGNIN_VIEW = true
产品名称(各地方都会显示的)
BRAND_NAME = 超级研发部门
定义域名访问:域名、访问域名
[server]
DOMAIN = example.org
EXTERNAL_URL = http://example.org/git/
▶ 仓库迁移:由于公司需求,进行了一次仓库迁移。迁移过程出现各种情况,迁移仅需要迁移数据库和本地储存的文件夹到新机器,启动 docker 即可。由于配置了域名访问,当时忘记了,导致每次都 400 500 报错,一直很懵,后来才发现,访问路径有问题,域名配置
TDEngine(暂时不建议)
创建 /home/dockerFiles/taos/taos.cfg 文件
命令创建并执行该容器
docker pull tdengine/tdengine:2.2.2.0
docker run --name tdengine
-p 16030:6030
-v /home/dockerFiles/taos/taos.cfg:/etc/taos/taos.cfg
-v /home/dockerFiles/taos/logs:/var/log/taos
-v /home/dockerFiles/taos/data:/var/lib/taos
-v /etc/localtime:/etc/localtime
-d tdengine/tdengine:2.2.2.0
1、客户端及服务端版本必须一致
2、FQDN方式访问,需要更改自身hosts及hostname
vim /etc/hosts 本地地址指向FQDN
vim /etc/taos/taos.cfg 配置FQDN地址
hostnamectl set-hostname FQDN 永久修改hostname为FQDN
vim /etc/hostname 修改hostname,上一步应该已经修改了
3、服务的方式启动:systemctl taosd start/service start taosd
4、启动失败,可以检查目录
cat /var/log/taos/xxxxx 检查错误日志
vim /var/lib/taos/dnode/dnodeEps.json 如果hostname错误,修改这里
5、检查参数:taosd -C
6、连接服务:taos -h FQDN -P 端口 -u 用户 -p 密码
注意事项:
1、客户端、服务端、其他节点必须时区一致
2、服务端需要同时开放TCP及UDP端口
▶ xxxxx
其他应用
NPS
创建 /home/dockerFiles/nps 文件夹,并放入各配置文件
配置文件点击下载,或前往项目主页下载 conf 文件夹文件
修改关键配置信息,如下【服务端配置文件详情】
命令创建并执行该容器
如果不想被占用80 443可以修改
http_proxy_port=10080
https_proxy_port=10443
配置信息,常修改如下 WEB 登录相关信息
web_username=xxx
web_password=xxx
docker pull ffdfgdfg/nps:v0.26.10
docker run --name=nps
–net=host
-v /home/dockerFiles/nps:/conf
-v /etc/localtime:/etc/localtime
-d --restart=always ffdfgdfg/nps:v0.26.10
▶ 语法含义:语句 --net=host 用于标明端口使用同系统
▶ 端口的开放注意防火墙端口放行 firewall-cmd --zone=public --add-port=40000-40100/tcp --permanent
▶ 无法直接访问管理接口8080,可以通过Nginx 进行转发
▶ Windows 客户端可以通过 install 注册服务:nps.exe install -server=host:port -vkey=xxxx -type=tcp,然后设置服务–>恢复–>选择重新启动服务和 0 天/分钟
▶ 本地临时启动,可以下载 nps.exe,并配置一句命令到 bat 文件即可:npc.exe -server=xxxxxx:8024 -vkey=xxxxxxxx -type=tcp
Halo
创建 /home/dockerFiles/halo/application.yaml 文件
使用数据库,则创建数据库 create database halodb character set utf8mb4 collate utf8mb4_bin;
命令创建并执行该容器
server:
port: 8090
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://172.17.0.1:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
username: root
password: 123456
halo:
Your admin client path is https://your-domain/admin-path
admin-path: admin
memory or level
cache: memory
docker pull halohub/halo:1.5.1
docker run --name halo
-p 8090:8090
-v /home/dockerFiles/halo:/root/.halo
-v /etc/localtime:/etc/localtime
-d --restart=always halohub/halo:1.5.1
▶ 注意考虑防盗及 Nginx 配置文件上传大小(默认 1MB,主题一般超过这个限制)
aliyun-webdav(项目无了)
获取阿里云盘 RefreshToken,登录网页版,控制台执行代码获取(如下)
命令创建并执行该容器
JSON.parse(window.localStorage[“token”]).refresh_token
docker pull zx5253/webdav-aliyundriver:2022-01-23
docker run --name aliyun
-p 18080:8080
-v /etc/localtime:/etc/localtime
-v /home/dockerFiles/aliyun/:/etc/aliyun-driver/
-v /etc/localtime:/etc/localtime
-e ALIYUNDRIVE_REFRESH_TOKEN=“Your Refresh Token”
-e ALIYUNDRIVE_AUTH_USER_NAME=“admin”
-e ALIYUNDRIVE_AUTH_PASSWORD=“admin”
-e JAVA_OPTS=“-Xmx1g”
-d zx5253/webdav-aliyundriver:2022-01-23
▶ 项目主页:https://github.com/zxbu/webdav-aliyundriver/
▶ 使用注意:大文件上传为分割上传,如进行 nginx 代理可能无法文件分割,导致出现BUG【建议不要使用 Nginx】
Windows
环境
Windows 启动 Redis、MySQL、Nginx 的命令如下,执行之前需要先做好文件挂载(文件下载)
记得添加磁盘 Shared-DockerSetting,默认密码都是 123456
docker run --name mysql -p 3306:3306 -v D:/DockerFiles/mysql/conf:/etc/mysql -v D:/DockerFiles/mysql/logs:/var/log/mysql -v D:/DockerFiles/mysql/data:/var/lib/mysql-files -e MYSQL_ROOT_PASSWORD=123456 -d --restart=always mysql:8.0
docker run --name redis -p 6379:6379 -v D:/DockerFiles/redis/redis.conf:/etc/redis/redis.conf -v D:/DockerFiles/redis/data:/data -d --restart=always redis:7.0.0 redis-server /etc/redis/redis.conf --appendonly yes
docker run --name nginx -p 80:80 -p 443:443 -v D:/DockerFiles/nginx/nginx.conf:/etc/nginx/nginx.conf -v D:/DockerFiles/nginx/logs:/var/log/nginx -v D:/DockerFiles/nginx/html:/etc/nginx/html -v D:/DockerFiles/nginx/cert:/etc/nginx/cert -d --restart=always nginx:1.21.6
以上是关于实践Docker部署的主要内容,如果未能解决你的问题,请参考以下文章