构建LNP镜像
1、构建ubuntu-base环境
#10.0.0.28:
[root@rocky8 ubuntu_base]#vim Dockerfile
FROM ubuntu:20.04
LABEL maintainer="www.wang.org" version="ubuntu_base:v1.0"
RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
RUN apt update && \
apt -y install tree wget vim curl iproute2 tzdata zip unzip && \
rm -f /etc/localtime && \
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
[root@rocky8 ubuntu_base]#docker build -t ubuntu_base:v1.0 .
2、基于ubuntu-base镜像构建php环境
#10.0.0.28:
[root@rocky8 ubuntu_php]#vim Dockerfile
FROM ubuntu_base:v1.0
LABEL maintainer="www.wang.org" version="ubuntu_php:v1.0"
ADD php-7.4.30.tar.gz /usr/local/src/
RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
RUN apt update && \
apt -y install gcc make libssl-dev libxml2-dev libsqlite3-dev libcurl3-dev libxml2 sqlite3 pkg-config zlib1g-dev libonig-dev libkrb5-dev libssl-dev libbz2-dev libcurl4-openssl-dev libpng-dev libjpeg-dev libfreetype-dev g++ libonig-dev libxslt-dev libzip-dev && \
cd /usr/local/src/php-7.4.30 && \
./configure --prefix=/apps/php74 --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-openssl --with-zlib --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --enable-mbstring --enable-xml --enable-sockets --enable-fpm --enable-maintainer-zts --disable-fileinfo && \
make && make install && \
useradd -r -u 888 nginx
COPY php.ini /apps/php74/etc/
COPY www.conf /apps/php74/etc/php-fpm.d/
COPY php-fpm.conf /apps/php74/etc/
[root@rocky8 ubuntu_php]#ls
Dockerfile php-7.4.30.tar.gz php-fpm.conf php.ini www.conf
[root@rocky8 ubuntu_php]#docker build -t ubuntu_php:v1.0 .
3、基于php镜像构建nginx镜像
#10.0.0.28:
[root@rocky8 ubuntu_nginx]#vim Dockerfile
FROM ubuntu_php:v1.0
LABEL maintainer="www.wang.org" version="ubuntu_nginx:v1.0"
ADD nginx-1.22.0.tar.gz /usr/local/src/
RUN apt update && \
apt install -y nfs-kernel-server nfs-common gcc openssh-server lrzsz tree openssl libssl-dev libpcre3 libpcre3-dev zlib1g-dev unzip zip make
RUN cd /usr/local/src/nginx-1.22.0 && \
./configure --prefix=/apps/nginx && \
make && make install && \
ln -s /apps/nginx/sbin/nginx /usr/bin && \
mkdir /apps/nginx/conf/conf.d && \
rm -rf /usr/local/src/nginx-1.22.0/*
ADD nginx.conf /apps/nginx/conf/nginx.conf
RUN chown -R nginx.nginx /apps/nginx/
COPY run_nginx.sh /usr/local/sbin/
EXPOSE 80 443
CMD ["run_nginx.sh"]
[root@rocky8 ubuntu_nginx]#vim run_nginx.sh
/apps/php74/sbin/php-fpm
/apps/nginx/sbin/nginx -g "daemon off;"
[root@rocky8 ubuntu_nginx]#chmod +x run_nginx.sh
[root@rocky8 conf.d]#vim wordpress.wang.org.conf
server {
listen 80;
server_name wordpress.wang.org;
root /data/wordpress;
index index.php index.html index.htm;
location ~ \.php$|ping {
root /data/wordpress;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
[root@rocky8 ubuntu_nginx]#docker build -t ubuntu_nginx:v1.0 .
[root@rocky8 data]#groupadd -r -g 888 nginx
[root@rocky8 data]#useradd -u 888 -g nginx -s /sbin/nologin -r nginx
[root@rocky8 data]#id nginx
uid=888(nginx) gid=888(nginx) groups=888(nginx)
[root@rocky8 data]#chmod -R nginx.nginx /data/wordpress/ #如果不给权限,wordpress连接数据会报无法写入的错误
[root@rocky8 conf.d]#docker run -it -d -p 80:80 --name wordpress -v /data/conf.d:/apps/nginx/conf/conf.d -v /data/wordpress:/data/wordpress ubuntu_nginx:v1.0
4、安装数据库
#10.0.0.28:
root@rocky8 ~]#docker pull mysql:8.0.30-oracle
[root@rocky8 ~]#docker run -d --name mysql --network container:wordpress -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=wordpress -e MYSQL_USER=wordpress -e MYSQL_PASSWORD=123456 -v /data/mysql:/var/lib/mysql mysql:8.0.30-oracle
[root@rocky8 conf.d]#docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b5c7e672d29f mysql:8.0.30-oracle "docker-entrypoint.s…" 9 minutes ago Up 9 minutes mysql
15a1a13becbe ubuntu_nginx:v1.0 "run_nginx.sh" 12 minutes ago Up 12 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp, 443/tcp wordpress
5、实现harbor高可用
#10.0.0.101:
[root@ubuntu2004 ~]#bash install_harbor.sh
[root@ubuntu2004 ~]#vim /apps/harbor/harbor.yml
hostname: 10.0.0.101
[root@ubuntu2004 ~]#/apps/harbor/prepare
[root@ubuntu2004 ~]#vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://pgavrk5n.mirror.aliyuncs.com"],
"insecure-registries": ["10.0.0.101","10.0.0.102"]
}
[root@ubuntu2004 ~]#systemctl restart docker.service
[root@ubuntu2004 ~]#systemctl restart harbor.service
##10.0.0.102:
[root@ubuntu2004 ~]#bash install_harbor.sh
[root@ubuntu2004 ~]#vim /apps/harbor/harbor.yml
hostname: 10.0.0.102
[root@ubuntu2004 ~]#/apps/harbor/prepare
[root@ubuntu2004 ~]#vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://pgavrk5n.mirror.aliyuncs.com"],
"insecure-registries": ["10.0.0.101","10.0.0.102"]
}
[root@ubuntu2004 ~]#systemctl restart docker.service
[root@ubuntu2004 ~]#systemctl restart harbor.service
#浏览器分别登陆101和102设置:项目、目标和规则






5-1、上传测试
[root@rocky8 ubuntu_nginx]#docker login 10.0.0.101
[root@rocky8 ubuntu_nginx]#docker tag ubuntu_nginx:v1.0 10.0.0.101/test/ubuntu_nginx:v1.0
[root@rocky8 ubuntu_nginx]#docker push 10.0.0.101/test/ubuntu_nginx:v1.0


构建LNP镜像的更多相关文章
- 微服务架构 - 基于Harbor构建本地镜像仓库
之前写过<搭建docker本地镜像仓库并提供权限校验及UI界面>文章,然后有同仁评论道这样做太复杂了,如果Harbor来搭建会更简单同时功能也更强大.于是抽时间研究了基于Harbor构建本 ...
- 多阶段构建Docker镜像
在Docker 17.05及更高的版本中支持支持一种全新的构建镜像模式:多阶段构建: 多阶段构建Docker镜像的最大好处是使构建出来的镜像变得更小: 目前常见的两个构建镜像的方式为: 1.直接使用某 ...
- Docker构建YApi镜像, Docker安装YApi, Docker部署YApi
概述 YApi 是高效.易用.功能强大的 api 管理平台,旨在为开发.产品.测试人员提供更优雅的接口管理服务.可以帮助开发者轻松创建.发布.维护 API,YApi 还为用户提供了优秀的交互体验,开发 ...
- 使用Jenkins pipeline流水线构建docker镜像和发布
新建一个pipeline job 选择Pipeline任务,然后进入配置页面. 对于Pipeline, Definition选择 "Pipeline script from SCM" ...
- Docker学习之4——构建NGINX镜像
Nginx是一个高性能的Web和反向代理服务器,它具有很多非常优越的特性:1.作为Web服务器.2.作为负载均衡服务器.3.作为邮件代理服务器.4.安装及配置简单.接下来我们介绍在docker构建ng ...
- docker构建自定义镜像
docker构建自定义镜像 要构建一个镜像,第一步准备所需要的文件,第二步编写Dockerfile文件,比如我现在构建一个java web镜像 第一步:准备java web工程的war包文件(这里假设 ...
- Docker:使用Jenkins构建Docker镜像
Docker 彭东稳 1年前 (2016-12-27) 10709次浏览 已收录 0个评论 一.介绍Jenkins Jenkins是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从 ...
- jenkins构建docker镜像上传到harbor并发布到kubernetes
很早之前写过一篇jenkins集成docker的文章,使用的是CloudBees Docker Build and Publish plugin插件.这篇文章是直接使用shell脚本做的,主要是这次有 ...
- 打包应用和构建Docker镜像(docker在windows上)
在构建Docker时编译应用 一般有两种方法在构建镜像时进行打包应用.第一种方法就是使用基本的镜像,该镜像包括应用平台和构建工具,因此在Dockerfile中,复制源代码到镜像中并在构建镜像时编译ap ...
随机推荐
- 记录Java类型推断关键字var的一种特殊用法
关于Java的var类型推断,有一种特殊用法,如下: 没有var类型之前声明一个匿名类对象,并调用它的方法. Object obj = new Object() { public void test( ...
- 从零开始Blazor Server(14)--修改密码
目前,我们只做了在用户管理里强行修改密码,而没有做用户自行修改密码的功能,今天我们来实现它. 首先,我们的用户密码修改最好的位置应该就是在头像下面的下拉菜单里,所以我们在那里的LinkTemplate ...
- 分布式版本控制系统Git的使用;
1.什么是Git Git是一个分布式的版本控制软件: 软件,类似于qq.office等安装到电脑才能使用的工具. 版本控制,类似于毕业论文,视频剪辑等需要反复修改和保留原历史数据: 分布式 文件夹拷贝 ...
- 【NOI P模拟赛】大阶乘(斯特林数)
题意 求 16 16 16 进制下, n ! n! n! 去掉尾部 0 0 0 后取模 2 64 2^{64} 264 的结果. n < 2 64 n<2^{64} n<264 一共 ...
- Windows编程之线程
本笔记整理自:<Windows核心编程(第五版)> 目录 何为线程 线程的开始和结束 创建线程 终止线程 线程运行时的调度和线程优先级 挂起(暂停).恢复与睡眠 挂起 恢复 睡眠 线程切换 ...
- 来点基础的练习题吧,看见CSDN这类基础的代码不多
来点基础的练习题吧,看见CSDN这类基础的代码不多 //正三角形 void ex03(){ int i,k=0, rows, space; printf("请输入三角形的层次:") ...
- 使用Pipeline抽象业务生命周期流程
上篇关于流程引擎的文章还是快两年以前的<微服务业务生命周期流程管控引擎>,这中间各种低代码平台层出不穷,虽然有些仅仅是OA+表单的再度包装,但有些的确是在逻辑和操作单元层面进行了真正的高度 ...
- Oracle PLM,协同研发的产品生命周期管理平台
官网:Oracle PLM - 方正璞华 适用企业:电子高科技.机械制造.医疗器械.化工行业等大型企业和中小型企业 咨询热线:4006-160-730 申请试用.预约演示.产品询价 邮箱:jiangc ...
- Git将本地仓库上传到github
这里采用简单的描述,提供两种方式: 一.连接本地文件夹和远程仓库 1.使用pull--拉取github项目文件 (1)进入到自己要上传的文件夹内部,然后git bash here (2)输入命令 gi ...
- Promtail Pipeline 日志处理配置
转载自:https://mp.weixin.qq.com/s?__biz=MzU4MjQ0MTU4Ng==&mid=2247492144&idx=1&sn=a1cc13a642 ...