zoukankan      html  css  js  c++  java
  • full-stack-fastapi-postgresql-从安装docker开始

    先说简单的(不想自己修改)

    不想自己修改的,可以把之后的cookiecutter部分改成
    cookiecutter https://github.com/coolbreeze2/full-stack-fastapi-postgresql.git

    ------以下是我修改的部分------

    主机环境

    centos7

    快速安装docker

    curl -sSL https://get.daocloud.io/docker | sh
    systemctl start docker
    systemctl enable docker
    

    快速安装docker-compose

    直接去https://github.com/docker/compose/releases/tag/1.24.1网页端下载,上传到主机。

    这里我下载的是https://github.com/docker/compose/releases/download/1.24.1/docker-compose-Linux-x86_64。

    mv 下载的文件路径 /usr/local/bin/docker-compose
    chmod +x /usr/local/bin/docker-compose
    ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
    docker-compose --version
    

    cookiecutter生成项目目录

    cookiecutter会生成对应的目录结构,过程中输入的一些参考参数如下:

    (base) [root@localhost home]# cookiecutter https://github.com/tiangolo/full-stack-fastapi-postgresql
    project_name [Base Project]: devops
    project_slug [devops]:
    domain_main [devops.com]:
    domain_staging [stag.devops.com]:
    docker_swarm_stack_name_main [devops-com]:
    docker_swarm_stack_name_staging [stag-devops-com]:
    secret_key [changethis]: 123456
    first_superuser [admin@devops.com]:
    first_superuser_password [changethis]: 123456
    backend_cors_origins '["http://localhost", "http://localhost:4200", "http://localhost:3000", "http://localhost:8080", "https://localhost", "https://localhost:4200", "https://localhost:3000", "https://localhost:8080", "http://dev.devops.com", "https://stag.devops.com", "https://devops.com", "http://local.dockertoolbox.tiangolo.com", "http://localhost.tiangolo.com"]':
    smtp_port [587]:
    smtp_host []:
    smtp_user []:
    smtp_password []:
    smtp_emails_from_email [info@devops.com]:
    postgres_password [changethis]: 123456
    pgadmin_default_user [admin@devops.com]:
    pgadmin_default_user_password [123456]:
    traefik_constraint_tag [devops.com]:
    traefik_constraint_tag_staging [stag.devops.com]:
    traefik_public_constraint_tag [traefik-public]:
    flower_auth [admin:123456]:
    sentry_dsn []:
    docker_image_prefix []:
    docker_image_backend [backend]:
    docker_image_celeryworker [celeryworker]:
    docker_image_frontend [frontend]:
    (base) [root@localhost home]#
    

    修改config.py

    backendappappcoreconfig.py修改行:

    BACKEND_CORS_ORIGINS: List = ["*"]

    ps: 不需要跨域的话可以不改。

    修改.env

    修改frontend.env

    # VUE_APP_DOMAIN_DEV=localhost
    VUE_APP_DOMAIN_DEV=你的主机ip或域名
    

    ps:本机访问不需要修改。

    docker换源

    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
        "registry-mirrors": [
            "https://1nj0zren.mirror.aliyuncs.com",
            "https://docker.mirrors.ustc.edu.cn",
            "http://f1361db2.m.daocloud.io",
            "https://dockerhub.azk8s.cn"
        ]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    

    npm换源

    frontend/Dockerfile中的RUN npm install替换

    RUN npm --registry https://registry.npm.taobao.org info underscore && 
        npm install --registry=https://registry.npm.taobao.org
    

    poetry改为pip

    poetry国内镜像用不了,这里换成pip

    backend/app新建requirments.txt文件,内容如下:

    uvicorn==0.11.3
    fastapi==0.54.1
    python-multipart==0.0.5
    email-validator==1.0.5
    requests==2.23.0
    celery==4.4.2
    passlib==1.7.2
    tenacity==6.1.0
    pydantic==1.4
    emails==0.5.15
    raven==6.10.0
    gunicorn==20.0.4
    jinja2==2.11.2
    psycopg2-binary==2.8.5
    alembic==1.4.2
    sqlalchemy==1.3.16
    pytest==5.4.1
    python-jose==3.1.0
    mypy==0.770
    black==19.10b0
    isort==4.3.21
    autoflake==1.3.1
    flake8==3.7.9
    pytest==5.4.1
    sqlalchemy-stubs==0.3
    pytest-cov==2.8.1
    bcrypt==3.2.0
    

    backend/celeryworker.dockerfilebackend/backend.dockerfile更改行如下:

    # pip install
    COPY ./app/requirments.txt /app/
    RUN pip config set global.index-url http://mirrors.aliyun.com/pypi/simple && 
        pip config set install.trusted-host mirrors.aliyun.com && 
        pip install -U pip && 
        pip install -r requirments.txt
    
    # Install Poetry
    #RUN curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | POETRY_HOME=/opt/poetry python && 
    #    cd /usr/local/bin && 
    #    ln -s /opt/poetry/bin/poetry && 
    #    poetry config virtualenvs.create false
    
    # Copy poetry.lock* in case it doesn't exist in the repo
    # COPY ./app/pyproject.toml ./app/poetry.lock* /app/
    
    # Allow installing dev dependencies to run tests
    #ARG INSTALL_DEV=false
    #RUN bash -c "if [ $INSTALL_DEV == 'true' ] ; then poetry install --no-root ; else poetry install --no-root --no-dev ; fi"
    

    docker-compose启动

    docker-compose up -d

    上述命令完成后,docker ps查看在运行的docker,正常数量应该是7个。

    服务没起来?

    前面的步骤有误,没关系,改完之后重来。

    docker stop $(docker ps -aq);docker rm $(docker ps -aq);docker rmi $(docker images -aq); docker-compose up -d
    
  • 相关阅读:
    SQL中的数据库设计三范式
    SQL中的DBA命令
    SQL中的视图
    SQL中的索引
    十大程序员必逛网站
    解放双手!你不知道的代码生成神器
    IT体系的演变
    Nginx的六种负载均衡策略
    前端Chrome调试小技巧汇总
    spring boot:使用async异步线程池发送注册邮件(spring boot 2.3.1)
  • 原文地址:https://www.cnblogs.com/coodyz/p/14287021.html
Copyright © 2011-2022 走看看