网站建设(六)用docker

现在构建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端口。

当然先制作好镜像。

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

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker是一种容器化技术,可以将应用程序及其依赖项打包成一个独立的容器,实现跨平台、快速部署和可移植性。而Docker Compose是一个用于定义和运行多个Docker容器的工具,可以通过编写一个YAML文件来定义多个容器之间的关系和配置。 要使用Docker Compose编译实现LNMP网站建设,可以按照以下步骤进行: 1. 安装DockerDocker Compose:首先需要在你的机器上安装DockerDocker Compose。你可以在Docker官方网站上找到相应的安装指南。 2. 创建Docker Compose文件:在你的项目目录下创建一个名为docker-compose.yml的文件,并在其中定义你的LNMP服务。例如: ```yaml version: '3' services: nginx: image: nginx ports: - 80:80 volumes: - ./nginx.conf:/etc/nginx/nginx.conf - ./html:/usr/share/nginx/html depends_on: - php php: image: php:fpm volumes: - ./php.ini:/usr/local/etc/php/php.ini - ./php:/var/www/html mysql: image: mysql environment: MYSQL_ROOT_PASSWORD: your_password volumes: - ./mysql:/var/lib/mysql ``` 上述示例中,我们定义了三个服务:nginx、php和mysql。nginx服务使用官方的nginx镜像,将主机的80端口映射到容器的80端口,并挂载了nginx.conf和html目录。php服务使用官方的php:fpm镜像,并挂载了php.ini和php目录。mysql服务使用官方的mysql镜像,并设置了root用户的密码,并挂载了mysql目录。 3. 编写配置文件:根据你的需求,编写nginx.conf和php.ini配置文件,并放置在与docker-compose.yml文件同级的目录下。 4. 构建和启动容器:在项目目录下执行以下命令,构建和启动容器: ``` docker-compose up -d ``` 这将会根据docker-compose.yml文件中的定义,创建并启动LNMP服务的容器。 至此,你就成功使用Docker Compose编译实现了LNMP网站建设

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值