Docker下搭建Apache+PHP+Mysql

如何在Docker下搭建Apache+PHP+mysql环境
最近想把自己的一个毕设拉进docker仓库中,于是就有了这一篇文章

拉取镜像

(在配置好docker国内镜像源地址之后)
docker pull centos
(下图是一开始的错误演示,该centos6中的yum地址错误一堆,所以我才pull了一个centos最新版本的镜像)
docker images —— 查看镜像
在这里插入图片描述

启动镜像并进入容器

docker run -it -p 2222:22 -p 8888:80 centos:latest /bin/bash
(将容器内的22端口映射到本地2222端口…)

docker ps -a —— 查看所有容器状态
在这里插入图片描述

安装mysql

yum install mysql
yum install mysql-server
systemctl enable mysqld.service —— 设置开机启动
systemctl start mysqld.service 或者 service mysqld start —— 启动mysql服务

存在问题

在这里插入图片描述
需添加 --privileged/sbin/init
docker stop [容器ID] —— 停止id容器
docker rm [容器ID] —— 删除id容器
docker run -tid --name test -p 8888:80 --privileged=true centos:latest /sbin/init —— 需要重新创建并启动新的容器
docker exec -it test /bin/bash —— 进入容器shell

不想手工编辑配置文件的话,就利用以下命令初始化mysql的配置
mysql_secure_installation

[root@localhost ~]# mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MySQL to secure it, we'll need the current
password for the root user. If you've just installed MySQL, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):<–初次运行直接回车
OK, successfully used password, moving on…
Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.
Set root password? [Y/n]    #是否设置root用户密码,输入y并回车或直接回车
New password:               #设置root用户的密码
Re-enter new password:      #再输入一次你设置的密码
Password updated successfully!
Reloading privilege tables..
… Success!
By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n]   #是否删除匿名用户,生产环境建议删除,所以直接回车
… Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] #是否禁止root远程登录,根据自己的需求选择Y/n并回车,建议禁止
… Success!
By default, MySQL comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] #是否删除test数据库,直接回车
- Dropping test database…
… Success!
- Removing privileges on test database…
… Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] #是否重新加载权限表,直接回车
… Success!
Cleaning up…
All done! If you've completed all of the above steps, your MySQL
installation should now be secure.
Thanks for using MySQL!

systemctl restart mysqld.service —— 重启mysql服务
mysql -u root -p —— 登录到数据库康康
在这里插入图片描述

安装Apache

yum install httpd
systemctl enable httpd.service
systemctl start httpd.service
在这里插入图片描述

安装php

yum -y install php
yum install php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc
(php-mysql和php-imap会失败,暂时不影响)

测试环境

systemctl restart httpd.service ——重启http服务
/var/www/html目录下编辑test.php
内容为<?php phpinfo();?>
在这里插入图片描述

保存当前容器环境为新的镜像

避免当前环境在下次启动新容器时重新创建,需要将当前容器保存为新的镜像先

Ctrl+D可以在不结束容器进程的情况下退出shell

docker commit [容器id] [新镜像名] —— 保存容器的修改

docker images 查看镜像,确实存在centos-test新镜像
在这里插入图片描述
再次启动新镜像,环境不变,状态良好
在这里插入图片描述
 
留着下次搭建使用
GOT IT!

 
******************************************************
小实验小结,具体测试利用方式需根据具体实践场景~

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值