今天在编译一个docker项目到时候,遇到了很多问题。记录一下
架构:Python+Django+bootstrap+SaltStack+Zabbix+MySQL
1 bash: docker-compose: command not found...
[root@localhost mysite]# docker-compose build bash: docker-compose: command not found... [root@localhost mysite]# pip -V bash: pip: command not found... [root@localhost opt]# pip -V pip 20.1.1 from /usr/lib/python2.7/site-packages/pip (python 2.7) [root@localhost opt]# pip install docker-compose ERROR: jsonschema 3.2.0 has requirement six>=1.11.0, but you'll have six 1.9.0 which is incompatible. [root@localhost mysite]# pip install six --user -U ImportError: No module named configparser
很多关于configparser,说是python 3.x修改了名字
[root@localhost mysite]# pip uninstall docker-compose [root@localhost mysite]# pip install docker-compose [root@localhost mysite]# docker-compose --version [root@localhost mysite]# find / -name docker-compose /usr/bin/docker-compose [root@localhost mysite]# docker-compose --version Traceback (most recent call last): File "/usr/bin/docker-compose", line 5, in <module> from compose.cli.main import main File "/usr/lib/python2.7/site-packages/compose/cli/main.py", line 24, in <module> from ..config import ConfigurationError File "/usr/lib/python2.7/site-packages/compose/config/__init__.py", line 6, in <module> from .config import ConfigurationError File "/usr/lib/python2.7/site-packages/compose/config/config.py", line 51, in <module> from .validation import match_named_volumes File "/usr/lib/python2.7/site-packages/compose/config/validation.py", line 12, in <module> from jsonschema import Draft4Validator File "/usr/lib/python2.7/site-packages/jsonschema/__init__.py", line 33, in <module> import importlib_metadata as metadata File "/usr/lib/python2.7/site-packages/importlib_metadata/__init__.py", line 16, in <module> from ._compat import ( File "/usr/lib/python2.7/site-packages/importlib_metadata/_compat.py", line 20, in <module> from backports.configparser import ConfigParser ImportError: No module named configparser [root@localhost mysite]# find / -name docker-compose /usr/bin/docker-compose [root@localhost mysite]# find / -name ConfigParser [root@localhost mysite]# find / -name configparser [root@localhost mysite]# python -V Python 2.7.5 [root@localhost mysite]# python -c 'import six; print(six.__version__)' 1.15.0 [root@localhost mysite]# python -c 'import six.moves; print(dir(six.moves))' --pip install --user pytz requests tqdm tzlocal python-dateutil --pip install configparser
还是不行,于是把python2换成python3.6试试
[root@localhost Python-3.6.0]# ./configure --enable-shared --prefix=/usr/local/python36/ checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking for python3.6... no checking for python3... no checking for python... python checking for --enable-universalsdk... no checking for --with-universal-archs... no checking MACHDEP... linux checking for --without-gcc... no checking for --with-icc... no checking for gcc... no checking for cc... no checking for cl.exe... no configure: error: in `/opt/Python-3.6.0': configure: error: no acceptable C compiler found in $PATH See `config.log' for more details [root@localhost Python-3.6.0]# yum install gcc -y [root@localhost Python-3.6.0]# make && make install zipimport.ZipImportError: can't decompress data; zlib not available make: *** [install] Error 1 [root@localhost Python-3.6.0]# yum -y install zlib* 再次运行make && make install 即可 [root@localhost ~]# which python /usr/bin/python [root@localhost ~]# ll /usr/bin/python* lrwxrwxrwx. 1 root root 7 Jul 16 22:00 /usr/bin/python -> python2 lrwxrwxrwx. 1 root root 9 Jul 16 22:00 /usr/bin/python2 -> python2.7 -rwxr-xr-x. 1 root root 7136 Aug 3 2017 /usr/bin/python2.7 [root@localhost ~]# rm /usr/bin/python [root@localhost ~]# ln -s /usr/local/python36/bin/python3.6 /usr/bin/python [root@localhost ~]# python -V python: error while loading shared libraries: libpython3.6m.so.1.0: cannot open shared object file: No such file or directory [root@localhost ~]# ll /usr/local/python36/lib/libpython3.6m.so.1.0 -r-xr-xr-x. 1 root root 12331440 Jul 17 03:19 /usr/local/python36/lib/libpython3.6m.so.1.0 [root@localhost ~]# cp /usr/local/python36/lib/libpython3.6m.so.1.0 /usr/lib64/ [root@localhost ~]# python -V Python 3.6.0 [root@localhost opt]# pip --version Traceback (most recent call last): File "/usr/bin/pip", line 5, in <module> from pip._internal.cli.main import main ModuleNotFoundError: No module named 'pip._internal' [root@localhost opt]# pip install -U pip //sudo easy_install --upgrade pip Traceback (most recent call last): File "/usr/bin/pip", line 5, in <module> from pip._internal.cli.main import main ModuleNotFoundError: No module named 'pip._internal' [root@localhost opt]# which pip /usr/bin/pip [root@localhost opt]# vim /usr/bin/yum 将第一行"#!/usr/bin/python" 改为 "#!/usr/bin/python2"即可 [root@localhost opt]# yum install python3-pip Downloading packages: File "/usr/libexec/urlgrabber-ext-down", line 28 except OSError, e: [root@localhost opt]# vim /usr/libexec/urlgrabber-ext-down 将第一行"#!/usr/bin/python" 改为 "#!/usr/bin/python2"即可 [root@localhost opt]# ll /usr/bin/pip* -rwxr-xr-x. 1 root root 220 Jul 17 02:14 /usr/bin/pip -rwxr-xr-x. 1 root root 220 Jul 17 02:14 /usr/bin/pip2 -rwxr-xr-x. 1 root root 220 Jul 17 02:14 /usr/bin/pip2.7 [root@localhost opt]# yum install python3-pip -y [root@localhost opt]# ll /usr/bin/pip* -rwxr-xr-x. 1 root root 220 Jul 17 02:14 /usr/bin/pip -rwxr-xr-x. 1 root root 220 Jul 17 02:14 /usr/bin/pip2 -rwxr-xr-x. 1 root root 220 Jul 17 02:14 /usr/bin/pip2.7 -rwxr-xr-x. 1 root root 407 Mar 17 19:38 /usr/bin/pip3 lrwxrwxrwx. 1 root root 9 Jul 17 03:35 /usr/bin/pip-3 -> ./pip-3.6 lrwxrwxrwx. 1 root root 8 Jul 17 03:35 /usr/bin/pip-3.6 -> ./pip3.6 -rwxr-xr-x. 1 root root 407 Mar 17 19:38 /usr/bin/pip3.6 [root@localhost opt]# pip3 -V pip 9.0.3 from /usr/lib/python3.6/site-packages (python 3.6)
安装docker-compose
方法1(在线安装,网络问题) # yum -y install libcurl libcurl-devel # curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose # chmod +x /usr/local/bin/docker-compose # docker-compose --version 方法2 安装python-pip yum -y install epel-release yum -y install python-pip 安装docker-compose pip install docker-compose pip install -U docker-compose==1.23.2 方法3 离线安装 https://github.com/docker/compose/releases/tag/1.23.2 下载安装包docker-compose-Linux-x86_64 [root@localhost opt]# mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose mv: overwrite ‘/usr/local/bin/docker-compose’? y [root@localhost opt]# chmod +x /usr/local/bin/docker-compose [root@localhost opt]# docker-compose --version Traceback (most recent call last): File "/usr/bin/docker-compose", line 5, in <module> from compose.cli.main import main ModuleNotFoundError: No module named 'compose'
问题依旧:
以使用国内的pip源进行加速 [root@localhost opt]# pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple -U docker-compose [root@localhost opt]# docker-compose --version docker-compose version 1.26.2, build unknown
[root@localhost mysite]# docker-compose build pip._vendor.requests.packages.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='pypi.tuna.tsinghua.edu.cn', port=443): Read timed out. You are using pip version 9.0.1, however version 20.1.1 is available. You should consider upgrading via the 'pip install --upgrade pip' command. ERROR: Service 'web' failed to build: The command '/bin/sh -c pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt' returned a non-zero code: 2 修改文件/mysite/Dockerfile 把pip修改为pip3 pip._vendor.requests.packages.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='pypi.tuna.tsinghua.edu.cn', port=443): Read timed out. ERROR: Service 'web' failed to build: The command '/bin/sh -c pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt' returned a non-zero code: 2 [root@localhost mysite]# pip3 --default-timeout=100 install -U pip [root@localhost mysite]# docker-compose build ##执行成功 [root@localhost mysite]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE mysite_web latest 8f76bc36af1b 7 minutes ago 867 MB docker.io/mysql latest 6e447ce4863d 3 days ago 544 MB docker.io/python 3.6.0 a1782fa44ef7 3 years ago 687 MB docker.io/django 1.9.5 c5b6e7c5c44c 4 years ago 433 MB [root@localhost mysite]# docker-compose run web django-admin.py startproject webserver ./DjangoWeb Creating mysite_db_1 ... done with open(new_path, 'wb') as new_file: PermissionError: [Errno 13] Permission denied: '/code/DjangoWeb/manage.py' ###The problem was with SELinux enabled on centos 7. [root@localhost DjangoWeb]# vim /etc/selinux/config [root@localhost DjangoWeb]# getenforce Enforcing [root@localhost DjangoWeb]# setenforce 0 [root@localhost DjangoWeb]# getenforce Permissive [root@localhost DjangoWeb]# docker-compose run web django-admin.py startproject webserver ./DjangoWeb Starting mysite_db_1 ... done [root@localhost DjangoWeb]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 402e7e3c3a51 mysite_web "django-admin.py s..." About a minute ago Exited (0) About a minute ago mysite_web_run_1155b6d3892c 429d164feb1f mysite_web "django-admin.py s..." 5 minutes ago Exited (1) 5 minutes ago mysite_web_run_b00ff320f226 0f7ed906ee56 mysite_web "django-admin.py s..." 6 minutes ago Exited (1) 6 minutes ago mysite_web_run_4d1a59a80e82 afed01a08c0a mysite_web "django-admin.py s..." 15 minutes ago Exited (1) 15 minutes ago mysite_web_run_6ac17fcdc847 436c584720a5 mysql "docker-entrypoint..." 15 minutes ago Up About a minute 3306/tcp, 33060/tcp mysite_db_1 7dd3c70e6dad 21dceb2c4044 "/bin/sh -c 'pip3 ..." 33 minutes ago Exited (2) 31 minutes ago trusting_goldberg a228801885f4 21dceb2c4044 "/bin/sh -c 'pip i..." 37 minutes ago Exited (2) 36 minutes ago keen_mcnulty