## 命令快捷化
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/introduction/
基本上涵蓋了后端開發中需要使用的軟件
https://laradock.io/introduction/#supported-software-images
這里以安裝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。
~~~bash
# 進入容器
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-started/#installation
### 刪除清理容器或者鏡像
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/#phpstorm-settings
## 定義屬于自己的docker-compose
laradocker還是比較大,所以我們要針對自己的項目定義一個屬于的docker項目。
我這里定義了一個后端的開發環境,可以參考: https://github.com/a5635268/docker_dev
## 參考
1. [go容器編排](https://github.com/flipped-aurora/gin-vue-admin/blob/master/docker-compose.yaml)
2.