docker-compose搭建lareval环境遇到的坑
images不存在
1、修改docker的镜像源
2、docker search 确认是否存在
ENTRYPOINT脚本路径
1、先复制到/usr/local/bin目录下
2、在填入绝对路径
eg:(dockerfile文件中)
COPY ./docker-entrypoint.sh /usr/local/bin/
ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]
ENTRYPOINT脚本权限
1、脚本记得给权限(dockerfile文件中)
eg: RUN chmod 755 /usr/local/bin/docker-entrypoint.sh
mysql默认密码及库
设置两个环境:(docker-compose.yaml文件中)
1、mysql初始密码:MYSQL_ROOT_PASSWORD
2、mysql初始化创建的数据库:MYSQL_DATABASE
eg:
MYSQL_ROOT_PASSWORD: 123123
MYSQL_DATABASE: laravel_tet
初始化sql
1、搭建开发环境的时候,肯定会有已有的数据结果和数据,需要进行初始化
2、在docker mysql的官方镜像中,镜像首次启动时,会自动执行这个目录(/docker-entrypoint-initdb.d)下的脚本
3、所以我们直接把需要执行的脚本挂载到执行的目录中去
eg:
volumes:
- ./build/sql:/docker-entrypoint-initdb.d
修改image名称
1、设置image的值;如果是根据dockerfile来build,那么就是image的值;如果image是dockerhub中的镜像名称,那么就是这个镜像名称
eg:(docker-compose.yaml文件中)
第一种:(名称为test_laravel_nginx)
build: ./build/docker/nginx
image: test_laravel_nginx
第二种:(名称为redis)
image: redis:latest
修改容器名称
1、设置container_name的值
eg:(docker-compose.yaml文件中)
container_name: test_laravel_php
nginx日志查看
php日志查看
strace使用
1、使用特权启动:(--privileged)
在run的时候使用
docker run -t -i --privileged container_name /bin/bash
在docker-compose使用
privileged: true
2、docker-compose中设置权限
cap_add: 添加linux的部分功能
cap_drop:删除linux的部分功能
eg:
在run的时候使用
docker run -t -i --cap_add=ALL --cap_drop=MKNOD container_name /bin/bash
在docker-compose使用
cap_add:
- ALL
cap_drop:
- NET_ADMIN
- SYS_ADMIN
如何跑crontab
1、安装crontab
2、在docker-entrypoint.sh中写入如下语句:
service crond start
crontab /data/htdocs/test_laravel/app/Console/crontab
nginx的容器如何安装软件
使用apt-get安装
eg:
1、apt-get update
2、apt-get install vim
3、apt-get install procps (安装ps命令工具)
容器一启动就退出
1、查看日志(docker logs container_name)
2、/usr/sbin/sshd -D
3、如果可以启动,登录容器查看
4、查看容器信息(docker inspect container_name)
如何对外提供访问
端口映射
1、宿主机解析域名
2、设置端口映射
3、访问宿主机指定端口