【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

具体的其他命令可以扩展源文件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

注意! 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…

    原文作者:菜问
    原文地址: https://segmentfault.com/a/1190000019996869
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞