Docker编写的构建非常慢

Docker编写的构建非常慢,docker,docker-compose,dockerfile,Docker,Docker Compose,Dockerfile,我使用docker compose,如下所示: version: '2.4' services: saul_python: container_name: saul_python environment: - DJANGO_SUPERUSER_PASSWORD=xxxx - DJANGO_SUPERUSER_EMAIL=xxxx - DJANGO_SUPERUSER_USERNAME=xxxx build: ./docker/pyt

我使用docker compose,如下所示:

version: '2.4'
services:
  saul_python:
    container_name: saul_python
    environment:
      - DJANGO_SUPERUSER_PASSWORD=xxxx
      - DJANGO_SUPERUSER_EMAIL=xxxx
      - DJANGO_SUPERUSER_USERNAME=xxxx
    build: ./docker/python
    ports:
      - 8888:8888
    volumes:
      - ./app:/var/www/html
      - ./test_images:/var/www/data/test_images
      - ./db_seeds:/var/www/data/db_seeds
    working_dir: /var/www/html
    depends_on:
      - saul_mysql
    networks:
      - my-proxy-net
  saul_mysql:
    build: ./docker/mysql
    container_name: saul_mysql
    ports:
      - 3388:3306
    volumes:
      - ./docker/mysql/persist:/var/lib/mysql:delegated
    environment:
      - MYSQL_ROOT_PASSWORD=password
      - MYSQL_DATABASE=xxxx
      - MYSQL_USER=xxxx
      - MYSQL_PASSWORD=password
      - MYSQL_ROOT_HOST=%
    networks:
      - my-proxy-net
# $ docker network create custom_network
networks:
  my-proxy-net:
    external:
      name: custom_network
这是mysql的配置,复制到:

[mysqld]
character-set-server=utf8mb4
general_log = 1
general_log_file = /var/lib/mysql/general.log
secure-file-priv= NULL
wait_timeout = 28800
max_allowed_packet=500M
innodb_data_file_path = ibdata1:10M:autoextend
sql-mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"
default-authentication-plugin=mysql_native_password
tmp_table_size=2G
max_heap_table_size=2G
[client]
default-character-set=utf8mb4
这是两个DockerFile,一个用于python,一个用于mysql

Mysql:

FROM mysql:5.7
COPY my.cnf /etc/mysql/conf.d/my.cnf
Python:

FROM python:3.9-slim

RUN apt update \
    && apt install bash -y \
    && apt install gcc -y \
    && apt install g++ -y \
    && apt install musl-dev -y \
    && apt install libmariadb-dev -y \
    && apt install libmagic1 -y \
    && apt install libffi-dev -y

RUN apt install mysql-common -y
RUN apt install libgeos-dev -y

# install pypi packages
COPY requirements.txt /requirements.txt
RUN pip install --upgrade pip \
    && pip install -r requirements.txt

COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
这是python的入口点:

#!/usr/bin/env /bin/sh

# our logic
python manage.py collectstatic --noinput
python manage.py makemigrations
python manage.py migrate

python manage.py createsuperuser --noinput --username $DJANGO_SUPERUSER_USERNAME --email $DJANGO_SUPERUSER_EMAIL
#python manage.py seeds

gunicorn --reload saul.wsgi -c ./gunicorn.py -b 0.0.0.0:8888

# Make pycharm work
exec "$@"
出于某种原因

$docker组合构建

大概需要1个小时

这是包含详细信息的生成:

root@ns524204:/var/www/saul# docker-compose --verbose build
compose.config.config.find: Using configuration files: ./docker-compose.yml
docker.utils.config.find_config_file: Trying paths: ['/root/.docker/config.json', '/root/.dockercfg']
docker.utils.config.find_config_file: No config file found
docker.utils.config.find_config_file: Trying paths: ['/root/.docker/config.json', '/root/.dockercfg']
docker.utils.config.find_config_file: No config file found
docker.utils.config.find_config_file: Trying paths: ['/root/.docker/config.json', '/root/.dockercfg']
docker.utils.config.find_config_file: No config file found
urllib3.connectionpool._make_request: http://localhost:None "GET /version HTTP/1.1" 200 863
urllib3.connectionpool._make_request: http://localhost:None "GET /v1.40/version HTTP/1.1" 200 863
compose.cli.docker_client.get_client: docker-compose version 1.27.4, build 40524192
docker-py version: 4.3.1
CPython version: 3.7.7
OpenSSL version: OpenSSL 1.1.0l  10 Sep 2019
compose.cli.docker_client.get_client: Docker base_url: http+docker://localhost
compose.cli.docker_client.get_client: Docker version: Platform={'Name': 'Docker Engine - Community'}, Components=[{'Name': 'Engine', 'Version': '19.03.13', 'Details': {'ApiVersion': '1.40', 'Arch': 'amd64', 'BuildTime': '2020-09-16T17:01:06.000000000+00:00', 'Experimental': 'false', 'GitCommit': '4484c46d9d', 'GoVersion': 'go1.13.15', 'KernelVersion': '4.15.0-123-generic', 'MinAPIVersion': '1.12', 'Os': 'linux'}}, {'Name': 'containerd', 'Version': '1.3.7', 'Details': {'GitCommit': '8fba4e9a7d01810a393d5d25a3621dc101981175'}}, {'Name': 'runc', 'Version': '1.0.0-rc10', 'Details': {'GitCommit': 'dc9208a3303feef5b3839f4323d9beb36df0a9dd'}}, {'Name': 'docker-init', 'Version': '0.18.0', 'Details': {'GitCommit': 'fec3683'}}], Version=19.03.13, ApiVersion=1.40, MinAPIVersion=1.12, GitCommit=4484c46d9d, GoVersion=go1.13.15, Os=linux, Arch=amd64, KernelVersion=4.15.0-123-generic, BuildTime=2020-09-16T17:01:06.000000000+00:00
compose.cli.verbose_proxy.proxy_callable: docker inspect_network <- ('custom_network')
urllib3.connectionpool._make_request: http://localhost:None "GET /v1.40/networks/custom_network HTTP/1.1" 200 934
compose.cli.verbose_proxy.proxy_callable: docker inspect_network -> {'Attachable': False,
 'ConfigFrom': {'Network': ''},
 'ConfigOnly': False,
 'Containers': {'07546d102e714b67e098875a660794489544255f0695f28905f0728b31096434': {'EndpointID': '3596cd3bbe27e6ab4d423655445f3e4c64c2b472116396442e2a7662235ffcaa',
                                                                                     'IPv4Address': '172.28.0.3/16',
                                                                                     'IPv6Address': '',
                                                                                     'MacAddress': '02:42:ac:1c:00:03',
                                                                                     'Name': 'mike_python'},
                '46b9615843c29526990fa9889880d043fd4c9a548388147f1c993eb0e4774c32': {'EndpointID': 'b3956666f153f46e6e98b373a492607237e895d69b87462971663b005819455b',
                                                                                     'IPv4Address': '172.28.0.2/16',
...
compose.service.build: Building saul_mysql
compose.cli.verbose_proxy.proxy_callable: docker build <- (path='/var/www/saul/docker/mysql', tag='saul_saul_mysql', rm=True, forcerm=False, pull=False, nocache=False, dockerfile=None, cache_from=None, labels=None, buildargs={}, network_mode=None, target=None, shmsize=None, extra_hosts=None, container_limits={'memory': None}, gzip=False, isolation=None, platform=None)
root@ns524204:/var/www/saul#docker compose——详细构建
compose.config.config.find:使用配置文件:./docker-compose.yml
docker.utils.config.find_config_文件:尝试路径:['/root/.docker/config.json','/root/.dockercfg']
docker.utils.config.find_config_文件:未找到任何配置文件
docker.utils.config.find_config_文件:尝试路径:['/root/.docker/config.json','/root/.dockercfg']
docker.utils.config.find_config_文件:未找到任何配置文件
docker.utils.config.find_config_文件:尝试路径:['/root/.docker/config.json','/root/.dockercfg']
docker.utils.config.find_config_文件:未找到任何配置文件
urllib3.connectionpool.\u发出请求:http://localhost:None “GET/version HTTP/1.1”200 863
urllib3.connectionpool.\u发出请求:http://localhost:None “GET/v1.40/version HTTP/1.1”200 863
compose.cli.docker_client.get_client:docker compose版本1.27.4,版本40524192
docker py版本:4.3.1
CPython版本:3.7.7
OpenSSL版本:OpenSSL 1.1.0升2019年9月10日
compose.cli.docker\u client.get\u client:docker base\u url:http+docker://localhost
compose.cli.docker_client.get_client:docker版本:平台={'Name':'docker引擎-社区'},组件=[{'Name':'Engine','version':'19.03.13','Details':{'ApiVersion':'1.40','Arch':'amd64','BuildTime':'2020-09-16T17:01:06.000000000+00:00','Experimental':'false','GitCommit':'4484c46d9d','GoVersion':'go1.13.15','KernerVersion':'4.15.0-123-generic','MinAPIVersion':'1.12','Os':'linux'},{'Name':'containerd','Version 1.3.7','Details':{'GitCommit':'8fba4e9a7d01810a393d5d25a3621dc101981175'},{'Name':'runc','Version':'1.0.0-rc10','Details':{'GitCommit':'dc9208a303feef5b3839f432d9beb36df0a9dd'},{'Name':'docker init','Version':'0.18.0','Details':{'GitCommit':'fec3683'}],Version=19.03.13,ApiVersion=1.40,MinAPIVersion=1.12,GitCommit=4484c46d9d,GoVersion=go1.13.15,Os=linux,Arch=amd64,KernelVersion=4.15.0-123-generic,BuildTime=2020-09-16T17:01:06.000000000+00:00
compose.cli.verbose\u proxy.proxy\u callable:docker inspect\u network{'Attachable':False,
'ConfigFrom':{'Network':'''},
“ConfigOnly”:False,
'容器':{'07546D102E714B67E098875A660794489544255F0695F28905F0728B310096434':{'EndpointID':'3596CD3BBE27E6AB4D423655445F3E4C64C2B4721163966442E2A766235FFCAA',
“IPv4Address”:“172.28.0.3/16”,
“IPV6地址”:“,
“MacAddress”:“02:42:ac:1c:00:03”,
'Name':'mike_python'},
‘46b9615843c29526990fa9889880d043fd4c9a548388147f1c993eb0e4774c32’:{‘EndpointID’:‘B3956666F153F46E6E98B373A492607237E895D69B87462971663B05819455B’,
“IPv4Address”:“172.28.0.2/16”,
...
compose.service.build:构建saul_mysql

compose.cli.verbose\u proxy.proxy\u callable:docker build生成的哪个部分速度较慢?它是否会挂起一个
RUN
命令?我已使用verbose添加了生成。但它不会挂起任何特定的运行