Docker配置Mysql、nginx、docker配置django、docker映象遷移
-
docker配置mysql
- docker search mysql
- docker pull mysql:5.7.24 注意:mysql Tags (docker.com)可以通過該網址查詢指定的容器版本tag。
- 執行mysql容器:docker run -d -p 3305:3306 --name mysql_01 -e MYSQL_ROOT_PASSWORD=nlp123456 mysql:5.7.24
其中:-d:表示後臺執行;-p 3305:3306:表示埠對映
☆☆☆☆mysql資料遷移:
-
拷貝資料庫原始檔: show variables like '%dir%';將datadir下所需要的mysql資料庫拷貝出去。
-
檢視docker下的mysql的資料存放目錄:docker inspect mysql_contain_name | grep Mounts -A 20 ;關閉容器:docker stop mysql_contain_id;並將步驟1的資料來源拷貝到Source下。然後啟動docker start mysql_contain_id。結束!!!
-
docker配置nginx
- docker search nginx
- docker pull nginx 這裡不做tag就預設下載最新版本
- 執行映象:* run -d -p 83:80 --name nginx_01 nginx
- 檢視所有的映象:
-
本地建立3個資料夾:mkdir -p ~/nginx/www ~/nginx/logs ~/nginx/conf
-
拷貝容器內 Nginx 預設配置檔案到本地當前目錄下的 conf 目錄,容器 ID 可以檢視 docker ps 命令輸入中的第一列:docker cp a6441efa5132:/etc/nginx/nginx.conf ~/nginx/conf
-
最終執行指令
- 把主機的 ~/nginx資料夾掛載到 mysqldocker容器的/usr/share/nginx資料夾裡面
- 改nginx的配置檔案就只需要把nginx配置檔案放在自定義的資料夾下( ~/nginx)
- 同時前端專案只需要放到~/nginx/www目錄下就ok:
- 執行指令:docker run -d -p 83:80 --name nginx_242 -v ~/nginx/www:/usr/share/nginx/html -v ~/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v ~/nginx/logs:/var/log/nginx nginx
-
docker配置django
1.配置Dockerfile
- base_images下的Dockerfile配置
#這裡我使用的是linux centos7系統環境 FROM centos:7 #這裡主要是新增一下作者資訊 MAINTAINER [email protected] #這裡是存放的路徑(網上大多說這裡是設定環境變數,本人是沒理解,根據我的實踐,這裡是將專案做成映象後的路徑) #ENV CODE_DIR=/home/hcx/images/admin_crawl #ENV DOCKER_SCRIPTS=$CODE_DIR/base_images/scripts ENV CODE_DIR=/opt/admin_crawl ENV DOCKER_SCRIPTS=$CODE_DIR/base_image/scripts #將scripts下的檔案複製到映象中的映象中的目錄裡(這裡個人感覺沒有什麼太大作用,先這樣進行復制) COPY ./scripts/* $DOCKER_SCRIPTS/ #執行映象中的provision.sh指令碼 RUN chmod a+x $DOCKER_SCRIPTS/* RUN $DOCKER_SCRIPTS/provision.sh
- scripts下的provision.sh配置
#!/bin/bash set -e #python環境依賴(這裡主要就是針對python環境所安裝的一些依賴包) yum install -y \ kde-l10n-Chinese\ glibc-common\ git\ wget\ mysql-devel\ gcc\ swig\ pulseaudio\ pulseaudio-libs\ pulseaudio-libs-devel\ zlib-devel\ bzip2-devel\ openssl-devel\ ncurses-devel\ sqlite-devel\ readline-devel\ tk-devel\ gdbm-devel\ db4-devel\ libpcap-devel\ xz-devel\ libffi-devel\ ncurese-devel\ automake\ autoconf\ libtool\ make\ alsa-lib-devel\ poppler-utils\ #python3.7(開始安裝Python環境) wget https://www.python.org/ftp/python/3.7.7/Python-3.7.7.tgz tar -zxvf Python-3.7.7.tgz cd Python-3.7.7 ./configure make && make install rm -rf Python-3.7.7*
- 主目錄(admin_crawl)下的Dockerfile配置
#基礎映象(這裡的base_app_image就是之前製作的基礎映象,專案映象是在基礎映象的基礎上進行製作的,這個一定要理解清楚) FROM base_app_image:1.0 #這裡主要就是設定一下編碼語言 RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8 ENV LC_ALL zh_CN.UTF-8 #將專案目錄檔案複製到映象中,CODE_DIR是在基礎映象中定義的 COPY . $CODE_DIR #安裝專案所需的依賴包(這裡借鑑的網上的部分資料) RUN pip3 install -U pip RUN pip3 config set global.index-url http://mirrors.aliyun.com/pypi/simple RUN pip3 config set install.trusted-host mirrors.aliyun.com RUN pip3 install altgraph==0.17 RUN pip3 install asgiref==3.2.10 RUN pip3 install attrs==20.2.0 RUN pip3 install beautifulsoup4==4.9.1 RUN pip3 install bs4==0.0.1 RUN pip3 install certifi==2020.6.20 RUN pip3 install click==7.1.2 RUN pip3 install contrib==0.3.0 RUN pip3 install cycler==0.10.0 RUN pip3 install Django==3.1.3 RUN pip3 install docopt==0.6.2 RUN pip3 install Flask==1.1.2 RUN pip3 install httpserver==1.1.0 RUN pip3 install importlib-metadata==2.0.0 RUN pip3 install itsdangerous==1.1.0 RUN pip3 install Jinja2==2.11.2 RUN pip3 install jsonschema==3.2.0 RUN pip3 install kiwisolver==1.2.0 RUN pip3 install macholib==1.14 RUN pip3 install MarkupSafe==1.1.1 RUN pip3 install matplotlib==3.3.2 RUN pip3 install numpy==1.19.2 RUN pip3 install Pillow==8.0.1 RUN pip3 install django-filter RUN pip3 install PyMySQL RUN pip3 install djangorestframework RUN pip3 install django-encrypted-model-fields RUN pip3 install django-python3-ldap RUN pip3 install django-cors-headers RUN pip3 install py2neo RUN pip3 install selenium RUN pip3 install my_fake_useragent RUN pip3 install lxml #暴露埠 EXPOSE 8000 #啟動專案,這裡的路徑就是前面基礎映象包的CODE_DIR路徑,再加上自己的專案複製到裡面的路徑,不清楚的可以參考這我給出的結構進行比對 CMD ["python3", "/opt/admin_crawl/manage.py", "runserver", "0.0.0.0:8000"]
-
製作基礎映象,在base_image資料夾中執行以下命令:docker build -t base_app_image:1.0 . #注意這裡的base_app_image指的是基礎映象的名稱,後面製作專案映象會用到這裡名稱;注意:版本號後面有一個點一定要加上**
-
製作專案映象:docker build -t my_app:1.0 . #這裡的my_app就是自己專案的映象名稱
-
檢視映象是否製作成功:docker images
- 啟動映象:docker run -d -p 8000:8000 --name admin_242 admin_crawl:6.0
- 指定本地( /home/hcx/opt)目錄掛載(/opt/admin_crawl/static/txt)目錄下的檔案: docker run -d -p 8000:8000 --name test -v /home/hcx/opt:/opt/admin_crawl/static/txt admin_crawl:7.0
-
docker映象遷移
-
docker映象打包
docker save -o admin_crawl.tar admin_crawl:6.0
-
docker映象遷移安裝
docker load -i admin_crawl.tar
-
-
docker日誌操作
- 檢視最近30m的日誌:docker logs --since 30m CONTAINER_ID
- 檢視某個時間之後的日誌:docker logs -t --since="2018-02-08T13:23:37" CONTAINER_ID
- 檢視某段時間的日誌:docker logs -t --since="2018-02-08T13:23:37" --until "2018-02-09T12:23:37" CONTAINER_ID
- 檢視指定時間後的100條日誌:docker logs -f -t --since="2018-02-08" --tail=100 CONTAINER_ID