您现在的位置是:首页 > 文章详情

docker学习系列16 使用过程的一些经验总结

日期:2018-10-06点击:394
  1. COPY 和 ADD 命令具有相同的特点:只复制目录中的内容而不包含目录自身。
    比如 backend 目录的结构如下:
 --- backend -- model -- controller 

如果执行

WORKDIR /app COPY backend . 

容器内app底下会是model和controller目录,并不是backend目录。
如果要拷贝整个目录,应该:
COPY backend ./backend

  1. 如果修改了 Dockerfile,记得要重新执行build,即生成新的镜像。这样启动后才能看到效果。
  2. 打包node项目中的node_modules问题。
    某node项目结构:
src node_modules package.json package-lock.json 

dockerfile部分代码

FROM node:8.12-alpine RUN mkdir -p /app WORKDIR /app COPY package.json . COPY package-lock.json . RUN npm install ... 

我们在容器内生成了项目所依赖的node_modules文件。这是docker的build阶段。
之后在run启动阶段时,在mouted共享目录时要特别小心,如果挂载整个项目,容器内的node_modules会被项目中的覆盖。
最好把需要挂载的文件单独放到一个目录中。

  1. 关于项目目录是挂载好,还是COPY ADD好,stackoverflow上有人也问过
  • COPY/ADD 文件是镜像的一部分,在docker构建阶段执行。比较适合项目的生产环境,比如自动化。对于成熟稳定的项目,把编译后的可以直接运行的代码打包进镜像内也利于分发。
  • volumn 是在docker运行阶段,本地文件变化能方便的反应到容器中,比较适合项目的开发阶段。
    要根据实际情况,挂载可以节省空间,便于修改。如果是想文件COPY到容器,每次修改文件都需要重新制作镜像。
  1. 关于 docker-compose,对于镜像的版本,数据库密码等不建议直接写死到 docker-compose.yml 中,可以新建.env文件。
    docker-compose部分
 mysql: build: ./docker-build/mysql ports: - "33060:3306" volumes: - ./docker-build/mysql/data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: ${DOCKER_MYSQL_PASSPORD-123456} 

.env文件
DOCKER_MYSQL_PASSPORD=mypassord
比如下面的${DOCKER_MYSQL_PASSPORD-123456}表示优先去.env文件找定义的key值,如果没有则使用默认值,即123456。
docker-compose.yml 受版本控制,.env不受。更多细节参考

  1. 在 Laravel 项目中,如果数据库跑在容器里,在宿主机直接执行 php aritsan是不行的,
    需要进到容器里执行,或者在宿主机执行docker-compose exec <mycontainer> php artisan或者是docker exec -it <mycontainer> php artisan
  2. 如果php项目用的nginx的php-fpm容器,想重启php-fpm,容器内使用kill -USR2 1,容器外执行docker exec -it <mycontainer> kill -USR2 1\
  3. docker-compose down要慎用,他会销毁所有容器和网络等。如果你之前在容器里修改过文件,都会没有。当然docker也不推荐直接在容器动手脚,建议写个shell脚本,启动之后在容器内执行。
  4. 还是 mysql 数据库问题,如果容器启动了 mysql,之后通过配置修改了密码,可能会造成重新连接后死活显示"Access denied"。
    这是因为如果建立了共享卷volume,里面存的还是老的user信息,需要docker-compose rm -v 清除卷然后重连。
  5. 删除日志 find /var/lib/docker/containers/ -type f -name "*.log" -delete
原文链接:https://yq.aliyun.com/articles/681808
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章