docker部署

1、安装docker

 # Step 1: 移除之前docker版本并更新更新 apt 包索引
 sudo apt-get remove docker docker-engine docker.io
 sudo apt-get update
 
 # Step 2: 安装 apt 依赖包,用于通过HTTPS来获取仓库
 sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
 
 # Step 3: 添加 Docker 的官方 GPG 密钥
 curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
 
 # Step 4: 设置docker稳定版仓库,这里使用了阿里云仓库
 sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
 sudo apt-get update
 
 # Step 5: 安装免费的docker Community版本docker-ce
 sudo apt-get -y install docker-ce
 # sudo apt-get install -y docker-ce=<VERSION> #该命令可以选择docker-ce版本
 
 # Step 6: 查看docker版本及运行状态
 sudo docker -v
 sudo systemctl status docker
 
 # Step 7:本步非必需。使用阿里云设置Docker镜像加速,注意下面链接请使用阿里云给自己的URL
 sudo mkdir -p /etc/docker
 sudo tee /etc/docker/daemon.json <<-'EOF'
 {  "registry-mirrors": ["https://ua3456xxx.mirror.aliyuncs.com"] }
 EOF
 sudo systemctl daemon-reload
 sudo systemctl restart docker

https://help.aliyun.com/document_detail/60750.html

2、docker-compose的安装过程

 # Step 1: 以ubuntu为例,下载docker-compose
 $ sudo curl -L https://github.com/docker/compose/releases/download/1.17.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
 # Step 2: 给予docker-compose可执行权限
 $ sudo chmod +x /usr/local/bin/docker-compose
 # Step 3: 查看docker-compose版本
 $ docker-compose --version

3、docker命令

查本地已有镜像

docker images

查看本地已有的容器:

docker ps -a

基础命令

docker rmi [images ID]  # 删除此 ID 的镜像
docker container stop [container ID]  # 停止此 ID 的容器
docker container start [container ID]  # 启动此 ID 的容器
docker container rm [container ID]  # 删除此 ID 的容器

删除所有镜像

docker rmi $(docker images -q)

杀死所有正在运行的容器

docker kill $(docker ps -a -q)

删除所有已经停止的容器

docker rm $(docker ps -a -q)

4、部署需要的文件

前提:有一个要部署的项目,文件名为MyBlog


更新系统

sudo apt-get update 
sudo apt-get upgrade

下载git

sudo apt-get install git

创建文件 MyBlog/docker-compose.yml

version: "3"

services:
  app:
    restart: always
    build: .
    command: bash -c "python3 manage.py collectstatic --no-input && python3 manage.py migrate && gunicorn --timeout=30 --workers=4 --bind :8000 django_app.wsgi:application"
    volumes:
      - .:/code
      - static-volume:/code/collected_static
    expose:
      - "8000"
    depends_on:
      - db
    networks:
      - web_network
      - db_network
  db:
    image: mysql:5.7
    volumes:
      - "./mysql:/var/lib/mysql"
    ports:
      - "3306:3306"
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=mypassword
      - MYSQL_DATABASE=django_app
    networks:
      - db_network
  nginx:
    restart: always
    image: nginx:latest
    ports:
      - "80:8000"
    volumes:
      - static-volume:/code/collected_static
      - ./config/nginx:/etc/nginx/conf.d
    depends_on:
      - app
    networks:
      - web_network

networks:
  web_network:
    driver: bridge
  db_network:
    driver: bridge

volumes:
  static-volume:

创建文件 MyBlog/config/nginx/django_app.conf

upstream app {
  ip_hash;
  server app:8000;
}

server {
  listen 8000;
  server_name localhost;

  location /static/ {
    autoindex on;
    alias /code/collected_static/;
  }

  location / {
    proxy_pass http://app/;
  }
}

创建文件 MyBlog/Dockerfile

FROM python:3.7
ENV PYTHONUNBUFFERED 1

# 添加这两行
RUN apt-get update
RUN apt-get install python3-dev default-libmysqlclient-dev -y

RUN mkdir /code
WORKDIR /code
RUN pip install pip -U
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/

requirements.txt增加

...
mysqlclient==2.0.1
gunicorn==19.9.0

修改django_app/settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'django_app',
        'USER': 'root',
        'PASSWORD': 'mypassword',
        'HOST': 'db',
        'PORT': '3306',
        'OPTIONS': {'charset': 'utf8mb4'},
    }
}

最后在MyBlog文件夹里面执行命令:

docker-compose build
docker-compose up

5、报错解决

在这里插入图片描述
在执行docker-compose up后会有这个报错,网上搜索了一番,说是数据库编码的问题


解决方法:

熟悉命令:

docker ps  #查询docker容器服务
docker exec -it mysql bash #进入MySQL服务
mysql -uroot -p #登陆mysql
set password for 'root' = password('密码') #修改mysql密码
set password for 'root'@'localhost' = password('密码') #修改本地密码

进入mysql容器后进入mysql,执行命令show databases;查看数据库,删除执行docker-compose up时创建的数据库,然后执行命令:

CREATE DATABASE `test2` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

创建编码为utf-8的数据库

quit退出mysql,exit退出mysql容器

删除掉所有的镜像和容器,并执行命令

docker-compose build
docker-compose up

学习链接:
https://www.dusaiphoto.com/article/75/
https://mp.weixin.qq.com/mp/appmsgalbum


心得:看着很复杂,其实一步一步跟着做很快就好了,刚开始不太懂这些,这么一点部署弄了3天,用了阿里云的服务器部署,一直部署不好换了好多次操作系统重新弄,但这个过程还是学到了很多啦!熟悉后半个钟就能搞定了,用docker果然比自己配置各种文件去部署容易得多!

非docker的部署可以看另外一篇文章:
https://blog.csdn.net/lzzlcy/article/details/118727106?spm=1001.2014.3001.5502

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值