markdown Shell用于使用Docker运行NPM,Composer和PHP之类的东西。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了markdown Shell用于使用Docker运行NPM,Composer和PHP之类的东西。相关的知识,希望对你有一定的参考价值。

# Shell functions to run things using Docker.

## Versions

Control the versions using environment variables, put this in your `.bashrc` or `.zshrc`.

``` bash
PHP_VERSION=7.1
NODE_VERSION=8.0
```

## Shell Functions

The shell functions below will run PHP, Composer, Node, NPM and Yarn using Docker, put these functions inside your .bashrc or .zshrc as well.

**PHP**

``` bash
php () {
    tty=
    tty -s && tty=--tty
    docker run \
        $tty \
        --interactive \
        --rm \
        --user $(id -u):$(id -g) \
        --volume /etc/passwd:/etc/passwd:ro \
        --volume /etc/group:/etc/group:ro \
        --volume $(pwd):/code \
        --workdir /code \
        --publish 8000:8000 \
        --publish 8080:8080 \
        php:$PHP_VERSION-cli php "$@"
}
```

**Composer**
``` bash
composer () {
    tty=
    tty -s && tty=--tty
    docker run \
        $tty \
        --interactive \
        --rm \
        --user $(id -u):$(id -g) \
        --volume /etc/passwd:/etc/passwd:ro \
        --volume /etc/group:/etc/group:ro \
        --volume $(pwd):/code \
        --volume $HOME/.config/composer:/composer \
        --workdir /code \
        composer "$@"
}
```

**PHPUnit**
``` bash
phpunit () {
    php vendor/bin/phpunit "$@"
}
```

**NodeJs**
``` bash
node () {
    tty=
    tty -s && tty=--tty
    docker run \
        $tty \
        --interactive \
        --rm \
        --user $(id -u):$(id -g) \
        --volume /etc/passwd:/etc/passwd:ro \
        --volume /etc/group:/etc/group:ro \
        --volume $(pwd):/code \
        --workdir /code \
        --publish 3000:3000 \
        --publish 3030:3030 \
        --publish 3333:3333 \
        --publish 8000:8000 \
        node:$NODE_VERSION node "$@"
}
```

**NPM**
``` bash
npm () {
    tty=
    tty -s && tty=--tty
    docker run \
        $tty \
        --interactive \
        --rm \
        --user $(id -u):$(id -g) \
        --volume /etc/passwd:/etc/passwd:ro \
        --volume /etc/group:/etc/group:ro \
        --volume $HOME/.config:$HOME/.config \
        --volume $HOME/.npm:$HOME/.npm \
        --volume $(pwd):/code \
        --workdir /code \
        --entrypoint /usr/local/bin/npm \
        --publish 3000:3000 \
        --publish 3030:3030 \
        --publish 3333:3333 \
        --publish 8000:8000 \
        node:$NODE_VERSION "$@"
}
```

**YARN**
``` bash
yarn () {
    yarnFile="$HOME/.yarnrc"

    if [ ! -f $yarnFile ]; then
        touch $yarnFile
    fi

    tty=
    tty -s && tty=--tty
    docker run \
        $tty \
        --interactive \
        --rm \
        --user $(id -u):$(id -g) \
        --volume /etc/passwd:/etc/passwd:ro \
        --volume /etc/group:/etc/group:ro \
        --volume $HOME/.config:$HOME/.config \
        --volume $HOME/.cache:$HOME/.cache \
        --volume $yarnFile:$yarnFile \
        --volume $(pwd):/code \
        --workdir /code \
        --entrypoint /usr/local/bin/yarn \
        --publish 3000:3000 \
        --publish 3030:3030 \
        --publish 3333:3333 \
        --publish 8000:8000 \
        node:$NODE_VERSION "$@"
}
```

以上是关于markdown Shell用于使用Docker运行NPM,Composer和PHP之类的东西。的主要内容,如果未能解决你的问题,请参考以下文章

100 行 shell 写个 Docker

Docker-in-Docker 与 Gitlab 共享运行器,用于构建和推送 docker 镜像到注册表

markdown 用于在Docker容器中运行本地Node项目的个人备忘单

markdown 用于在Centos 7上创建VSI和安装Docker Engine的Terraform示例文件

sh 用于查找docker图像后代的Shell脚本

使用 shell 脚本在 docker 容器中运行脚本