【docker專題(8)】單節點最佳實踐

命令快捷化

wget -P ~ https://github.com/a5635268/docker_dev/.bashrc_docker;
echo "[ -f ~/.bashrc_docker ] && . ~/.bashrc_docker" >> ~/.bashrc; source ~/.bashrc

# 進入容器
docker-enter nginx

# 運行容器上命令
docker-enter nginx -- uptime
docker-enter nginx -- df -h

# 信息查看
docker-ip nginx
docker-pid nginx
[info] 具體的其他命令可以擴展源文件bashrc_docker

laradock

這裏以php開發環境爲例,大而全的有laradock

官網:https://laradock.io/introduct...

基本上涵蓋了後端開發中需要使用的軟件

https://laradock.io/introduct...

這裏以安裝lnmp套件爲例

git clone https://github.com/laradock/laradock.git
cp  env-example  .env

# env配置
# 配置文件中指定項目目錄
APP_CODE_PATH_HOST=../project-z/

# 配置安裝其他擴展
WORKSPACE_INSTALL_SWOOLE=true

# 配置php版本
PHP_VERSION=7.3

# 每個服務可以直接看目錄名
docker-compose up -d nginx mysql php redis

# 安裝完成後查看
docker-compose ps

# 進入容器,這裏的msyql是docker-compose裏面定義的容器名
docker-compose exec mysql bash

# 代碼編寫
# 查看env的NGINX_SITES_PATH獲得網站配置路徑(可以事先定義)
  • 具體的掛載目錄可以查看docker-compose.yml

版本切換

以mysql爲例


# 修改 .env 文件
MYSQL_VERSION=5.7 # 默認爲 latest

#停止mysql容器
docker-compose stop mysql

# (可選)刪除舊數據庫數據,具體的可以看docker-compose.yml
rm -rf ~/.laradock/data/mysql

# !注意重啓docker應用,然後再構建新 mysql
docker-compose  build --no-cache mysql 

 # 重新創建容器
docker-compose up -d mysql

# 查看現有 mysql 版本
docker inspect laradock_mysql_1 | grep MYSQL_VERSION

# 如果沒有啓動成功,就查看日誌對應這解決問題
docker start laradock_mysql_1
docker logs laradock_mysql_1

多版本共存

以mysql爲例,做主從配置

# 複製docker-compose.yml原來的mysql部分
### MySQL-slave ################################################
    mysql-slave:
      build:
        context: ./mysql
        args:
          - MYSQL_VERSION=${MYSQL_VERSION}
      environment:
        - MYSQL_DATABASE=${MYSQL_DATABASE}
        - MYSQL_USER=${MYSQL_USER}
        - MYSQL_PASSWORD=${MYSQL_PASSWORD}
        - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
        - TZ=${WORKSPACE_TIMEZONE}
      volumes:
        - ${DATA_PATH_HOST}/mysql-slave:/var/lib/mysql
        - ${MYSQL_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d
      ports:
        - "${MYSQL_SLAVE_PORT}:3306"
      networks:
        - backend

# env新增
MYSQL_SLAVE_PORT = 3307

Workspace容器

laradock使用了一個叫Workspace容器,來作爲所有項目的公共操作區。這個工作區容器,封裝了web開發的絕大多數命令行工具。你的項目只要在工作區目錄下,那麼可以公用這些命令行工具。目前,主要包括了php的composer ,laravel的artisan工具,還包括了nodejs的npm,vue-cli。還有一些工具是默認不安全,但是可以通過修改env開啓的,比如說swoole擴展,python的命令行工具,以及symfony。

# 進入容器
docker-compose exec workspace bash

# 切換用戶執行,比如composer用root的話就會有warnning
docker-compose exec --user=laradock workspace bash

# 配置ssh登錄
WORKSPACE_INSTALL_WORKSPACE_SSH = true
# 然後重新構建鏡像,使用 docker-compose build workspace,再啓動鏡像。

ssh -i workspace/insecure_id_rsa -p2222 root@laravel
[danger] 注意! workspace中的PHP版本雖然和php-fpm容器的版本一致,但是它們是兩個不同的PHP。 workspace中主要的是運行命令行用到。

具體參考: https://laradock.io/getting-s...

刪除清理容器或者鏡像

docker ps -a | awk '{ print $1,$2 }' | grep laradock_ | awk '{print $1}' | xargs -I {} docker rm {}

docker images | awk '{print $1,$2,$3}' | grep laradock_ | awk '{print $3}' | xargs -I {} docker rmi {}

關於xdebug的phpstorm配置

https://laradock.io/guides/#p...

定義屬於自己的docker-compose

laradocker還是比較大,我們還是要針對自己的項目定義一個屬於的docker項目。

我這裏定義了一個後端的開發環境,可以參考: https://github.com/a5635268/d...

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章