网站建设(六)用docker

本文记录了作者使用Django构建并部署应用的过程,包括解决依赖库冲突、构建Docker镜像、配置阿里云容器服务、设置Nginx代理及MySQL数据库连接等关键步骤。

现在构建django镜像,然后推到我的阿里云上,

https://cr.console.aliyun.com/cn-shanghai/instances/repositories?accounttraceid=e6d4b6968aa14671bfbb2550d156292adcqa

https://cr.console.aliyun.com/cn-shanghai/instances/repositories

现在给django安装必要的库。

出现问题

 libc6-dev : Breaks: binutils (< 2.26) but 2.25-5 is to be installed
太难受了,重新用ubuntu构建docker!

给django upgrade了。

apt-get install python3-dev default-libmysqlclient-dev -y

安装成功了,推送到阿里云上。

https://www.cnblogs.com/danielyoung/p/10608677.html

密码在website里

阿里云又登不上去了。。。

算了,构建在本地就足够了。。。

打包成了ssdjango

既然有了ssdjango,那么就好办了。

log是至关重要的,log也需要挂载。

反正行了。。。

接下来弄nginx。

注意app2与app3不能同时,,,因为mysql占用。

接下来就是nginx配置到django,这个很难。

现在遇到了换源困难。docker内换源特别困难。。。换源难得一匹。要换倒也没关系,关键它连GDG认证也没有就很难受。

现在django换源成功了。

现在就是自己制作自己的docker,就不用dockerfile了。

制作自己的nginx,django,mysql,dockerfile也会方便很多。

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys '公钥编码'

容器就tm不能安装。。。

django容器太老了。。。

自己从ubuntu开始构建django吧。必须自己构建,因为有很多插件要安装。

而且直接制作一个自己的国内源拷贝过去就好了。。。

好难啊。。。

现在django镜像制作好了。

打算除了nginx的端口暴露出来,其他端口都是容器隐藏的。

全部配置应该都在nginx.conf里面。

  • 主配置文件:/usr/local/nginx/conf/nginx.conf
  • 通过nginx -c 可以指定要读取的配置文件来启动

因此修改主配置文件即可。它监听一个端口,转移到另一个端口,这个怎么实现呢?

django和mysql都需要挂载本地卷的,但是nginx应该不用,最多把nginx.confadd进去,它没必要挂载卷。

只有处在相同网络的容器才能互相通讯。不同网络之间是隔离的,即便采用同样的端口,也无法通讯。例如nginx和mysql之间是无法通信的,也没这个必要。

  • expose 和 ports 都可以暴露容器的端口,区别是 expose 仅暴露给其他容器,而 ports 会暴露给其他容器和宿主机。

和挂载一样,数据卷的生命周期脱离了容器,删除容器之后卷还是存在的。下次构建镜像时,指定卷的名称就可以继续使用了。只不过这是docker管理的,位置你找不到,这样就比较方便,各有各的作用吧。例如mysql就挺好。

server {
  listen 8000;
  server_name localhost;
  
  location /static/ {
    autoindex on;
    alias /code/collected_static/;
  }
  
  location / {
    proxy_pass http://app/;
  }
}

大概明白是什么意思,但这样就会送到容器里面吗?

实际上还是用django的自带服务器,没有用wsgi,再者一台服务器,用什么nginx。。。因此化简,第二步就可以了,保留日志就可以了。

 

可能还需要最后的整理一下,或者说,直接用app2就完事了。。。

首先,改改dockerfile

其实不用改,卷挂载是在最后。

compose文件最后改到80端口就可以了。现在也是不用改。

现在mysql也没有挂载,先运行起来再说。

接下来改改setting。


DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'django_app',
        'USER': 'root',
        'PASSWORD': 'mypassword',
        'HOST': 'database',
        'PORT': '3306',
        'OPTIONS': {'charset': 'utf8mb4'},
    }
}
说说这几个的意义,方便以后改。

NAME是容器名,现在是sharesoft,其实是数据库名。

应该改这里就行了,root的话应该是默认的,也是可以改的。行。

行,万事俱备,现在再检查一下docker文件。

好,现在启动:

sudo docker-compose up

现在好像是打开了,但是好像哪里出问题了,看不见log啊。

方法就是进去开启。

要不你用node重构一下?node的好处就是完全没有前端了,完全的后端工程实现了。自己非常熟悉。

但是现在就是先要用django搭建出来?算是给自己的一个交代。

好了,能跑了,但是接下来我就要用node-vue了,这个用得爽多了。

切换到80端口。

当然先制作好镜像。

只留下当前容器,删除所有容器与镜像。

 

 

 

 

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值