【使用docker 搭建lnmp+gitea服务】

安装 docker

如果已安装可以跳过这个过程,这里以阿里云centos举例

安装docker的yum库
yum install -y yum-utils

配置docker的yum源 阿里云源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

运行安装docker命令
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

启动docker
systemctl start docker

国内访问不了docker hub 下拉镜像
可以配置其他源来下载,如果你是阿里云服务,可以在阿里云控制平台找到 “容器镜像服务 ACR” 这里可以放自己的镜像,关键的是这里有个 “镜像工具” 镜像加速器 有个加速地址 (xxxxx.mirror.aliyuncs.com),给docker 配置文件配置这个镜像源。

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://xxxxx.mirror.aliyuncs.com"]//注意例子中的镜像源地址是不正确的
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

部署服务说明

这里通过docker -v 挂载目录文件
我是创建了

setup.py
web/													#主目录
├── nginx/											    #Nginx服务相关目录
|	├──conf												#Nginx的配置文件目录
|	|	├──conf.d										#Nginx的网站配置
|	|	└──nginx.conf									#Nginx的主配置文件。
│   └── log												#Nginx的日志文件目录。
├── gitea												#Gitea(Git服务)相关目录,包含配置和数据
│   ├── conf											#配置
│   │   ├── localtime  									# 配置
│   │   └── timezone									#配置
│   └── data											#Gitea的数据文件目录
├── mysql												#MySQL数据库相关目录
│   ├── conf											#MySQL的配置文件目录
│   │   ├── conf.d										#MySQL的额外配置文件目录
│   │   └── my.cnf										#MySQL的主配置文件
│   └──data												#MySQL的数据文件目录。
├── php													#PHP相关目录,包含不同版本的配置
│   └── 74												#版本号
│       └── conf										#PHP 7.4的配置文件目录
│           ├── php.ini									#PHP 7.4的主配置文件。
│           └── www.conf								#PHP 7.4的Web服务器配置文件
├── redis												#Redis数据库相关目录,包含配置和数据。
│   ├── conf											#Redis的配置文件目录。
│   │   └── redis.conf									#Redis的主配置文件。
│   └── data											#Redis的数据文件目录。
└── www													#网站根目录,存放网站代码和静态文件。

 

Nginx 部署步骤

下载 Nginx 镜像
docker pull nginx:1.20

启动临时容器
docker run --name nginx -d nginx

复制容器配置文件到宿主机
docker cp nginx:/etc/nginx/nginx.conf /web/nginx/conf/nginx.conf
docker cp nginx:/etc/nginx/conf.d /web/nginx/conf
docker cp nginx:/usr/share/nginx/html /web/html
docker cp nginx:/var/log/nginx /web/nginx/log

设置目录权限
chmod 755 -R /web/nginx
chmod 755 -R /web/www
chmod 755 -R /web/html

删除临时容器
docker stop nginx && docker rm nginx

启动正式容器

docker run \
 --restart=always \
 --name nginx_server \
 --privileged=true \
 -p 80:80 \
 -p 443:443 \
 -v /web/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
 -v /web/nginx/conf/conf.d:/etc/nginx/conf.d \
 -v /web/html:/usr/share/nginx/html \
 -v /web/nginx/log:/var/log/nginx \
 -v /web/www:/www \
 -d nginx:1.20

需要注意的是nginx这里映射的地址是/www,配置网站读取请按容器目录配置

MySQL 部署步骤

下载 MySQL 镜像
docker pull mysql:8.0

创建挂载目录
mkdir -p /web/mysql/{conf,data,log}

启动临时容器
docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql

复制配置文件
docker cp mysql:/etc/mysql/conf/my.cnf /web/mysql/my.cnf

设置目录权限
chmod 755 -R /web/mysql

删除临时容器
docker stop mysql && docker rm mysql

启动正式容器

docker run \
 -p 3306:3306 \
 --restart=always \
 --name mysql_server \
 --privileged=true \
 -v /web/mysql/log:/var/log/mysql \
 -v /web/mysql/data:/var/lib/mysql \
 -v /web/mysql/conf/my.cnf:/etc/mysql/my.cnf \
 -e MYSQL_ROOT_PASSWORD=your_password \
 -d mysql:8.0

注意your_password是mysql root用户密码请配置你的密码

Redis 部署步骤

下载 Redis 镜像
docker pull redis

创建挂载目录
mkdir -p /web/redis/{conf,data}

创建配置文件
touch /web/redis/conf/redis.conf

启动容器

docker run \
 --restart=always \
 --log-opt max-size=100m \
 --log-opt max-file=6 \
 -p 6379:6379 \
 --name redis_server \
 -v /web/redis/conf/redis.conf:/etc/redis/redis.conf \
 -v /web/redis/data:/data \
 -d redis redis-server /etc/redis/redis.conf \
 --appendonly yes \
 --requirepass your_password

注意your_password是mysql root用户密码请配置你的密码

PHP-FPM 部署步骤

下载 PHP-FPM 镜像
docker pull php:7.4-fpm

创建挂载目录
mkdir -p /web/www
mkdir -p /web/php/74/{conf,log}

启动临时容器
docker run --name fpm_php74_server -p 9000:9000 -d php:7.4-fpm

复制配置文件
docker cp fpm_php74_server:/usr/local/etc/php/php.ini-production /web/php/74/conf/php.ini
docker cp fpm_php74_server:/usr/local/etc/php-fpm.d/www.conf /web/php/74/conf/www.conf

启动正式容器

docker run \
 -p 9000:9000 \
 --name fpm_php74_server \
 --link mysql_server:mysql \
 --link redis_server:redis \
 -v /web/www:/www \
 -v /web/php/74/conf/www.conf:/usr/local/etc/php-fpm.d/www.conf \
 -v /web/php/74/conf/php.ini:/usr/local/etc/php/php.ini \
 -d php:7.4-fpm

这里使用了link 在用mysql redis 直接使用名称不需要填ip适合固定一直运行的服务,没有配置需要使用容器的ip 查看容器ip请看最后的命令

Gitea 部署步骤

下载 Gitea 镜像
docker pull docker.gitea.com/gitea:1.23.8

启动容器

docker run \
 -p 3000:3000 \
 -p 222:22 \
 --restart=always \
 --name gitea_server \
 -v /web/gitea/data:/data \
 -v /web/gitea/conf/timezone:/etc/timezone:ro \
 -v /web/gitea/conf/localtime:/etc/localtime:ro \
 -e USER_UID=1000 \
 -e USER_GID=1000 \
 -d docker.gitea.com/gitea

容器内网 IP 查询方法

查询容器内网 IP
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_id

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值