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

发布时间 2023-04-30 21:48:29作者: junlin623

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 即可

访问成功~~