首页 > 数据库 >制作一个包含Centos7+Nginx+Mysql8+JDK8的Docker镜像

制作一个包含Centos7+Nginx+Mysql8+JDK8的Docker镜像

时间:2023-04-30 21:56:51浏览次数:55  
标签:RUN nginx Mysql8 -- Centos7 Nginx yum && 镜像

1. 创建一个文件夹用于构建Docker镜像:

mkdir my-docker-image
cd my-docker-image

2. 在该文件夹中创建一个名为Dockerfile的文件。

vim Dockerfile

3.在Dockerfile中编写以下代码:

FROM centos:7

#RUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list

# 给基础镜像centos安装必备的环境
# 加上“rpm --rebuilddb &&”是为了防止数据库损坏而影响yum安装。
# 注意,比较保险的做法是有多少个yum命令,就加多少个“rpm --rebuilddb &&”在yum前面。
RUN rpm --rebuilddb && yum install -y autoconf automake make wget proc-devel net-tools zlib zlib-devel make gcc  g++ openssl-devel pcre pcre-devel tar

# 在线安装nginx(也可以在本地先下载压缩包,再用ADD命令将包加入到基础镜像/usr/src目录中)
RUN wget http://nginx.org/download/nginx-1.17.1.tar.gz

# 解压到当前目录
RUN tar -zxvf nginx-1.17.1.tar.gz


# 配置nginx
RUN cd nginx-1.17.1 && ./configure --prefix=/usr/local/nginx && make && make install

# 在线安装jdk1.8
RUN cd ~ && yum install -y java-1.8.0-openjdk-devel.x86_64

# 安装MySQL(仓库地址:http://repo.mysql.com/)
RUN wget http://repo.mysql.com/mysql80-community-release-el7.rpm
RUN yum install -y mysql80-community-release-el7.rpm
RUN yum install -y mysql-server mysql-devel

# 设置工作目录
WORKDIR /usr/local/nginx/sbin

# 将nginx添加到环境变量
ENV PATH $PATH:/usr/local/nginx/sbin

EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]


Mysql的安装包仓库地址: http://repo.mysql.com/

4. 构建Docker镜像。

执行以下命令来构建Docker镜像,镜像名为server,这里不用加-f参数指定dockerfile文件是因为我们就是按照标准名称Dockerfile为文件命名的:

docker build -t server .

需要等一段时间...

可以看到生成了一个名为server 的镜像:

5. 启动镜像

--privileged=true 是以特权模式启动,这样我们在容器中才可以使用像systemctl 这样的系统级命令,否则执行会报错,如下图

# 容器名为server1,注意:必须以特权模式启动,否则进入容器后systemctl命令不能用
docker run --name server1 -d -p 80:80 --privileged=true server /usr/sbin/init

启动成功:

6. 进入容器

docker exec -it server1 /bin/bash

7. 运行mysql

# 需要先在 /var/log/mysqld.log中查看默认生成的密码再用这个密码登录
cat /var/log/mysqld.log

用默认密码登录后需要更改root用户的密码

ALTER USER 'root'@'localhost' IDENTIFIED BY '密码'

如果想要外部访问还需要进一步的配置,可以看我的这篇博客:https://www.cnblogs.com/junlin623/p/17062850.html

8.外部访问测试

启动nginx,我们之前已经添加了环境变量,所以直接执行 nginx 即可

访问成功~~

标签:RUN,nginx,Mysql8,--,Centos7,Nginx,yum,&&,镜像
From: https://www.cnblogs.com/junlin623/p/17365829.html

相关文章

  • 使用nginx搭建3台Tomcat集群
    配置上游服务器upstreamtomcats{server192.168.206.129:8080;server192.168.206.130:8080;server192.168.206.131:8080;}server{listen612;server_namewww.tomcats.com;location/{proxy_passhttp://tomcats;}......
  • CentOs7:如何安装jdk、mysql、redis、gti、maven?
       一、JDK使用压缩包安装,jdk-8u361-linux-x64.tar.gz。//1、解压tar-zvxf....tar.gz//2、配置环境变量vim/etc/profile//新增内容JAVA_HOME=/soft/jdk1.8.0_361PATH=$JAVA_HOME/bin:$PATH//3、重新加载文件profilesource/etc/profile//4、测试ja......
  • 记一次nginx配置不当引发的499与failover 机制失效
    背景nginx499在服务端推送流量高峰期长期以来都是存在的,间或还能达到告警阈值触发一小波告警,但主观上一直认为499是客户端主动断开,可能和推送高峰期的用户打开推送后很快杀死app有关,没有进一步探究问题根源。然而近期在非高峰期也存在499超过告警阈值的偶发情况,多的时候一天几......
  • Nginx 入门实战(2)--简单使用
    本文主要介绍Nginx的实际使用,文中所使用到的软件版本:Centos7.9.2009、Nginx1.22.1。1、环境准备这里主要演示使用Nginx代理Http及TCP应用,环境信息如下:主机用途Http端口TCP端口10.49.196.30部署Http、TCP应用8080909010.49.196.31部署Http、TCP......
  • .NET Core部署到linux(CentOS)最全解决方案,高阶篇(Docker+Nginx 或 Jexus)
    在前两篇:.NETCore部署到linux(CentOS)最全解决方案,常规篇.NETCore部署到linux(CentOS)最全解决方案,进阶篇(Supervisor+Nginx)我们对.netcore部署到linux有了一个充分的了解,已经可以满足应用要求了,这篇文章我们继续深入带你了解使用Doker+jexus或Nginx来部署.netcore应用。......
  • .NET Core部署到linux(CentOS)最全解决方案,高阶篇(Docker+Nginx 或 Jexus)
    在前两篇:.NETCore部署到linux(CentOS)最全解决方案,常规篇.NETCore部署到linux(CentOS)最全解决方案,进阶篇(Supervisor+Nginx)我们对.netcore部署到linux有了一个充分的了解,已经可以满足应用要求了,这篇文章我们继续深入带你了解使用Doker+jexus或Nginx来部署.netcore应用。......
  • .NET Core部署到linux(CentOS)最全解决方案,高阶篇(Docker+Nginx 或 Jexus)
    在前两篇:.NETCore部署到linux(CentOS)最全解决方案,常规篇.NETCore部署到linux(CentOS)最全解决方案,进阶篇(Supervisor+Nginx)我们对.netcore部署到linux有了一个充分的了解,已经可以满足应用要求了,这篇文章我们继续深入带你了解使用Doker+jexus或Nginx来部署.netcore应用。......
  • .NET Core部署到linux(CentOS)最全解决方案,高阶篇(Docker+Nginx 或 Jexus)
    在前两篇:.NETCore部署到linux(CentOS)最全解决方案,常规篇.NETCore部署到linux(CentOS)最全解决方案,进阶篇(Supervisor+Nginx)我们对.netcore部署到linux有了一个充分的了解,已经可以满足应用要求了,这篇文章我们继续深入带你了解使用Doker+jexus或Nginx来部署.netcore应用。......
  • .NET Core部署到linux(CentOS)最全解决方案,高阶篇(Docker+Nginx 或 Jexus)
    在前两篇:.NETCore部署到linux(CentOS)最全解决方案,常规篇.NETCore部署到linux(CentOS)最全解决方案,进阶篇(Supervisor+Nginx)我们对.netcore部署到linux有了一个充分的了解,已经可以满足应用要求了,这篇文章我们继续深入带你了解使用Doker+jexus或Nginx来部署.netcore应用。......
  • Centos7设置静态IP
    Centos7设置静态IP在虚拟机中安装完centos之后,一般都是无法直接使用网络的,最明显的分辨方法是ping某个ip时会提示未知的名称或服务,有时使用ifconfig命令时也会出现类似的提示,这个时候我们可能需要手动进行ip设置首先使用dhclient工具,为本机尝试使用dhcp分配一个网络内可用的......