CentOS 7下使用docker-compose部署Django与MySQL实战

背景:

本萌最近在部署自己开发的项目的时候发现同一套代码上传到服务器上后,部分功能莫名其妙的有点问题,服务器的各项配置都没有做过变动,所以想把项目转战到docker。

奈何刚接触docker,很多地方都不懂,在这个坑里面折腾了一两天。决定对本次实践做个过程总结希望少点人走弯路。

系统环境:CentOS 7

一、docker安装

1、以root用户登录(使用sudo命令也行,本人懒,不想敲那么多字符),删除旧版本的docker;

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine

2、如果以前安装过docker的,需要先删除以前的docker文件;

rm -rfv /var/lib/docker/

3、安装docker-ce(最新的系统可以不需要执行,本人为了保险起见执行了 ^0^);

yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

4、下载docker-ce的yum源配置文件;

yum-config-manager \
    –add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

5、安装docker-ce;

yum install docker-ce

6、设置docker-ce随系统启动;

systemctl enable docker

7、启动docker;

systemctl start docker

8、验证docker是否安装成功;

docker -v

检查结果如下:

 9、安装docker-compose

curl -L https://github.com/docker/compose/releases/download/1.20.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

二、编写项目dockerfile文件

在动手写之前,先看下项目结构:

编写好的Dockerfile文件如下:

FROM Python:3.6.4
ENV PYTHONUMBUFFERED 1
RUN mkdir /leartd
RUN mkdir /leartd/dockermysql
WORKDIR /leartd
ADD requirements.txt /leartd/
RUN pip install -r requirements.txt
ADD . /leartd/

三、编写docker-compose.yml文件

version: ‘3’
services:
        db:
                image: mysql
                restart: always
                command: mysqld –character-set-server=utf8mb4 –collation-server=utf8mb4_unicode_ci –init-connect=’SET NAMES utf8mb4;’ –innodb-flush-log-at-trx-commit=0
                expose:
                        – “3306”
                volumes:
                        – ./dockermysql:/var/lib/mysql:rw
                environment:
                        – MYSQL_DATABASE=demodb
                        – MYSQL_ROOT_PASSWORD=123456
        web:
                build: .
                command: python manage.py runserver 0.0.0.0:9000 –insecure
                volumes:
                        – .:/leartd
                ports:
                        – “8080:9000”
                depends_on:
                        – db

command:执行的命令内容是为了给mysql指定字符编码,不指定时,默认使用的是lanti1编码,在使用中文字符的时候会乱码

四、修改项目settings.py文件配置

修改地方有两个,

1、

ALLOWED_HOSTS = [‘*’, ]

2、

DATABASES = {
    ‘default’: {
        ‘ENGINE’: ‘django.db.backends.mysql’,
        ‘NAME’: ‘demodb’,
        ‘USER’: ‘root’,
        ‘PASSWORD’: ‘123456’,
     ’HOST’: ‘db’,
    }
}

这里的NAME就是docker-compose.yml文件中的MYSQL_DATABASE,PASSWORD为docker-compose.yml文件中的MYSQL_ROOT_PASSWORD,HOST为docker-compose.yml文件第三行的内容

五、编译项目

docker-compose build

六、启动项目

docker-compose up

docker-compose up -d(后台运行)

在浏览器中输入localhost:8080就可以成功访问项目了

七、附录

1、查看当前docker容器中已有的image

docker image ls

2、查看所有的容器

docker ps -a

3、批量停止在运行中的容器

docker ps -a | grep ‘Up’ | awk ‘{print $1}’| xargs docker container stop

4、批量删除Exited状态的容器

docker ps -a | grep ‘Exited’ | awk ‘{print $1}’| xargs docker container rm

5、批量删除name为none的image

docker image ls | grep none | awk ‘{print $3}’ | xargs docker image rm

八、未完全解决的问题:

通过docker-compose up运行项目后,首次需要去web容器里面手动执行makemigrations、migrate、createsuperuser命令。

暂时不知道怎么处理,如有大神路过还望指点一二

九、需要后续处理的问题:

搭建私有registry,把镜像提交到私有的registry。

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/222368.html<

(0)
管理的头像管理
上一篇2025-04-15 11:25
下一篇 2025-04-15 11:26

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注