Docker运行

随笔2个月前发布
37 0 0

Docker运行

本教程中没有拉取Nginx的镜像,可以用来调试或者使用宿主机上的nginx进行反向代理映射出来的端口

流程

一、拉取mysql镜像,配置运行容器
二、拉取redis镜像、配置运行容器
三、制作swoole运行镜像执行docker build
四、运行swoole环境镜像,配置映射文件启动容器
五、进入swoole环境容器,启动项目,在宿主机尝试访问

Docker镜像加速器

点击链接使用支付宝登录后就能看到加速器地址和操作方法

阿里云登录 – 欢迎登录阿里云,安全稳定的云计算服务平台

Dockerfile

根目录下没有Dockerfile的可以复制下面的命令




FROM leekay0218/crmeb-pro


 


## 复制代码 在本地调试注释掉,使用映射把文件映射进去


#ADD ./ /var/www


 


# 设置容器启动后的默认运行目录


WORKDIR /var/www


 


# 默认入口命令


ENTRYPOINT ["/entrypoint.sh"]


 


#本地调试进入容器后手动执行命令,如果是部署项目的话可以打开注释


#CMD ["php", "think", "swoole"]

windows下运行

安装Docker

下载链接:https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe?utm_source=docker&utm_medium=webreferral&utm_campaign=dd-smartbutton&utm_location=module

安装Mysql镜像

docker pull mysql:5.7

1. 创建一个my.cnf文件,方便修改配置

创建目录:d:docker-image/mysql/my.cnf,写入以下内容




    [mysqld]


    sql_mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
2. 创建MYSQL容器
docker run -p 3316:3306 --name mysql01 -v D:docker-imagemysqlmy.cnf:/etc/mysql/my.conf.d/mysqld.cnf -e TZ=Asia/Shanghai -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7

参数解释:

—name mysql01 容器名称
-p 3316:3306 映射到宿主机的端口
-v D:docker-imagemysqlmy.cnf:/etc/mysql/mysql.conf.d/my.cnf 映射宿主机的mysql配置到容器中
-e TZ=Asia/Shanghai -e MYSQL_ROOT_PASSWORD=root 指定环境变量
-d mysql:5.7 镜像名称

3. 进入容器
docker exec -it mysql01 /bin/bash

4. 查看hosts文件内的ip
cat /etc/hosts

如图,图中172.17.0.4就是容器内的ip地址

Docker运行

5. 更改程序中的mysql配置

密码和数据库名记得修改

Docker运行

6. 在容器中尝试进入mysql命令行

输入mysql的密码

mysql -uroot -p

如遇到如下问题(这里指的是警告错误,不是密码没有的错误):

Docker运行

执行命令:

chmod 644 /etc/mysql/mysql.conf.d/mysqld.cnf

再次尝试连接mysql

安装Redis镜像

docker pull redis:latest

1. 配置redis.conf,l可以去官网下载一个redis的安装包把里面的redis.conf配置文件复制出来放在自己常用的地址中,这里存放在D:docker-image/redis/redis.conf中。修改



bind 0.0.0.0 #改成0.0.0.0,使redis可以外部访问


 


daemonize no   #用守护线程的方式启动


 


requirepass 你的密码   #给redis设置密码


 


appendonly yes   #redis持久化  默认是no
2. 创建redis存储文件夹
D:docker-image/redis/data

3. 运行redis镜像
docker run -itd -p 6380:6379 --name redis1 -v D:docker-image
edis
edis.conf:/etc/redis/redis.conf -v D:docker-image
edisdata:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes

解释:

-p 把容器内部的6379映射到宿主机内的6380,方便测试redis是否启动成功
-name 设置当前容器的名称
-v 映射配置
-d 镜像名称

4.进入容器

进入容器

docker exec -it redis1 /bin/bash

5.查看hosts文件;执行:cat /etc/hosts,找到当前容器对外的ip地址填写在redis的REDIS_HOSTNAME上

查看hosts命令

cat /etc/hosts

Docker运行

6. 在第一步中设置的密码记得填写进来

Docker运行

制作SWOOLE运行镜像

1. 进入到项目根目录看到Dockerfile文件后在当前目录打开命令行

执行命令,后面的点,一定不能缺少;创建一个叫:pro的镜像

镜像内php版本为7.4版本

docker build -t pro .

2. 运行镜像
docker run -itd -p 20199:20199 --name pro_test1 -v D:WWWCRMEB_PROcrmeb_pro:/var/www pro

解释:
-v D:WWWCRMEB_PROcrmeb_pro:/var/www 把本地D:WWWCRMEB_PROcrmeb_pro下的文件映射到容器中的/var/www目录中这样就改了本地的文件容器内的就自动变
—name 容器名称
-p 20199:20199 映射端口
最后的参数:pro是镜像的名称

3. 进入容器启动项目

pro_test1是上一步给容器设置的名称,其他都是固定格式

docker exec -it pro_test1 /bin/bash

启动项目:

php think swoole

在容器中使用热更新,可能会报如下错误,可以关闭热更新,改文件后手动重启下swoole

关闭热更新:

Docker运行

错误图:

Docker运行

linux下运行

几乎和在window上运行起来差不多的流程。

拉取mysql镜像
docker pull mysql:5.7

启动mysql容器(启动的配置映射文件需要自己创建)

docker run -p 3316:3306 --name mysql_pro -v "$PWD/mysql.cnf":/etc/mysql/mysql.cnf -e TZ=Asia/Shanghai -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7

Docker运行

进入容器尝试连接mysql

docker exec -it mysql_pro /bin/bash

Docker运行

查看容器分配ip

cat /etc/hosts

Docker运行

拉取redis镜像

docker pull redis:latest

启动容器

docker run -itd -p 6380:6379 --name redis_pro -v "$PWD/redis.conf":/etc/redis/redis.conf -v "$PWD/data":/data -d redis redis-server /etc/redis/redis.conf --appendonly yes

进入容器尝试连接redis

docker exec -it redis_pro /bin/bash

Docker运行

创建pro镜像(如果没有Dockerfile请先自己创建一个,内容在顶部)

docker build -t pro_s .

运行容器

$PWD属于当前目录的绝对路径,如果打开了Dockerfile中的ADD可以不用使用-v把文件映射进入容器

docker run -itd -p:20199:20199 --name pro_s -v "$PWD/":/var/www pro

配置mysql和redis账号密码(记得查看redis分配的ip地址,和查看mysql的命令一样)

vim .env

Docker运行

进入容器

docker exec -it pro_s /bin/bash

启动服务

php think swoole

Docker运行

新打开一个命令行验证是否成功

curl -v 127.0.0.1:20199

Docker运行

停掉swoole后在执行:curl命令证明运行成功

Docker运行

查看镜像:
docker images

查看正在运行的容器(无法查看到启动失败的容器):
docker ps

查看所有容器(可以查看到启动失败的容器):
docker ps -a

查看容器日志(用来检查容器无法启动的问题):
docker logs 容器id或者容器名称

删除容器:
docker rm 容器id或者容器名称

启动容器:
docker start 容器id或者容器名称

删除镜像:
docker rmi 镜像名称或者id

删除正在运行的镜像
docker rmi -f 镜像名称或者id
© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...