记使用docker部署项目出现问题

我的docker-compose.yml内容如下:

version: "3"
services:
  mysql:
    image: mysql:latest # mysql:oracle
    restart: always
    container_name: mysql
    command: 
      - --lower_case_table_names=1
    ports:
      - 3306:3306
    volumes:
      - ./init.sql:/docker-entrypoint-initdb.d/setup.sql
    environment:
      - MYSQL_ROOT_PASSWORD=123456
    healthcheck:
      test: ["CMD", "mysqladmin" ,"ping", "-h", "mysql"]
      timeout: 5s
      retries: 20

  my_server:
    build: .
    restart: always
    depends_on:
      mysql:
        condition: service_healthy
    ports:
      - 9999:9999
    links:
      - mysql
    environment:
      - ADMIN_PASSWD=admin   # 这个会覆盖Dockerfile里面的内容

  

Dockerfile内容如下:


FROM sanicframework/sanic:3.8-latest

WORKDIR /sanic/my_server

COPY . /sanic/my_server

COPY . .

RUN pip install -r requirements.txt

EXPOSE 9999

CMD ./start.sh

使用docker-compose.yml部署项目时候,提示RuntimeError:‘cryptography’ package isrequired for sha256_password or caching_sha2_password,出现的原因是mysql8.0+版本使用了新的密码校验插件,需要安装cryptography这个库,

在.yml这里插入图片描述

当你在requirement.txt加上cryptography==39.0.1后,重新运行docker compose up这条命令时候,又出现如下错误

在这里插入图片描述

也就是说,安装cryptography这个库的时候,下载依赖出现问题,解决这个问题就是安装一些必备的库,在Dockerfile文件添加以下内容

RUN apk update

RUN apk --update add gcc musl-dev libffi-dev openssl-dev 

RUN apk add gcc musl-dev python3-dev libffi-dev openssl-dev cargo

RUN pip install -r requirements.txt

EXPOSE 9999

RUN apk del --purge gcc musl-dev libffi-dev openssl-dev

就可以解决库安装问题,完整的dockerfile如下:


FROM sanicframework/sanic:3.8-latest

WORKDIR /sanic/my_server

COPY . /sanic/my_server

COPY . .

RUN apk update

RUN apk --update add gcc musl-dev libffi-dev openssl-dev 

RUN apk add gcc musl-dev python3-dev libffi-dev openssl-dev cargo

RUN pip install -r requirements.txt

EXPOSE 9999

RUN apk del --purge gcc musl-dev libffi-dev openssl-dev

CMD ./start.sh $ADMIN_PASSWD

当你再次运行docker compose up时候,又出现问题,提示如下错误

 /bin/sh: ./start.sh: not found

刚开始我怀疑是没有将这个文件复制到容器里面,所以加了如下内容

![在这里插入图片描述](https://img-blog.csdnimg.cn/6e29c466a8734e50ad81fd90b9190a2d.png在这里插入图片描述

再次运行docker compose up,还是找不到not found start.sh

最终没有运行start.sh文件,而是直接跑main.py,让容器先跑起来,再 exec 到 容器里 vi .start.sh,发现后面多了一个^M,也就是换行符引起的,最后在Dokcerfile引入如下内容完美解决

RUN dos2unix ./start.sh

完整的Dockerfile如下:

FROM sanicframework/sanic:3.8-latest

WORKDIR /sanic/my_server

COPY . /sanic/my_server

COPY . .

RUN apk update

RUN apk --update add gcc musl-dev libffi-dev openssl-dev dos2unix
#
#  The Rust available by default in Alpine < 3.12 is older than the minimum supported version.
#  https://cryptography.io/en/latest/installation.html
# 
RUN apk add gcc musl-dev python3-dev libffi-dev openssl-dev dos2unix

RUN pip install -r requirements.txt

EXPOSE 9999

RUN apk del --purge gcc musl-dev libffi-dev openssl-dev dos2unix

VOLUME ["/sanic/license/config", "/sanic/license/log"]

CMD ./start.sh $ADMIN_PASSWD
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值