当前位置:   article > 正文

docker-compose 以交互式方式运行你的容器_docker-compose 进入容器

docker-compose 进入容器

最近遇到一个问题,用docker-compose编排的mysql和django服务,在django模型上加了一个没有默认值(就不想在模型上加default=xxx)的非空字段,这时候django会要求你提供一个默认值给这个字段。这时候容器将会启动失败。想尝试docker run单独启动django服务,但又依赖容器化的mysql服务。那该怎么办呢?

docker-compose.yml文件:

  1. version: '2.0'
  2. services:
  3. mysql:
  4. image: mysql:5.7
  5. container_name: itom_service_mysql
  6. restart: always
  7. ports:
  8. - "33063:3306"
  9. volumes:
  10. - ./docker_files/mysql/data:/var/lib/mysql
  11. - ./docker_files/mysql/conf:/etc/mysql/conf.d
  12. - ./docker_files/mysql/logs:/var/log/mysql
  13. - ./docker_files/mysql/init:/docker-entrypoint-initdb.d/
  14. environment:
  15. - MYSQL_ROOT_PASSWORD=pwd123456
  16. - TZ=Asia/Shanghai
  17. command: [ 'mysqld' ]
  18. networks:
  19. - net-itom_service
  20. backend:
  21. image: jianbopei/itom_service:1.0.3
  22. container_name: itom_service_django
  23. restart: always
  24. working_dir: /data/server/itom_service
  25. env_file:
  26. - .env
  27. # 只在容器间暴露8000端口
  28. expose:
  29. - 8000
  30. # 将容器8000映射到宿主机8000
  31. # ports:
  32. # - "8000:8000"
  33. volumes:
  34. - /data/server/itom_service/static #静态文件
  35. - ./itom_service:/data/server/itom_service #代码
  36. - ./itom_service/logs/:/data/server/itom_service/logs #日志
  37. depends_on:
  38. - mysql
  39. networks:
  40. - net-itom_service
  41. command: ['sh', '/data/server/run/wait-for.sh', 'mysql:3306', '--', 'sh', '/data/server/run/start.sh']
  42. networks:
  43. net-itom_service:
  44. driver: bridge

此时,就可以以交互式方式启动容器,到容器里面执行migrate命令并提供一个默认值。命令格式为:

docker-compose run your_service sh

your_service是docker-compose.yml文件中定义的服务名称,本例中为backend。

  1. 执行docker-compose run -d mysql,启动mysql容器以便做数据迁移
  2. 执行docker-compose run backend sh,以交互式启动django服务容器
  3. 以交互式启动容器后,就可以执行migrate命令并提供默认值了

当然如果你在backend定义了depend_on:mysql,也可以直接运行docker-compose run backend sh,这会自动帮你拉起mysql服务。

总结:

  1. docker-compose也可以像docker一样以交互式方式启动容器
  2. docker-compose单独启动容器时,也会使用docker-compose.yml中定义的networks网络,所以不用担心上面的mysql和backend容器网络连通性问题
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/537841
推荐阅读
相关标签
  

闽ICP备14008679号