现在构建django镜像,然后推到我的阿里云上,
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端口。
当然先制作好镜像。
只留下当前容器,删除所有容器与镜像。