小编Sky*_*Rar的帖子

如何在官方 docker php 镜像上以非 root 用户身份运行 composer

我使用官方的 php:alpine https://github.com/docker-library/php/blob/master/7.2/alpine3.7/fpm/Dockerfile作为我的基础镜像。我的项目基本上是基于作曲家的项目。所以我在它上面安装了 Composer,如下所示。

RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin -- --filename=composer
Run Code Online (Sandbox Code Playgroud)

当我使用composer install它安装任何软件包时,它以 root 身份运行,因为主 php 进程以 root 身份运行。那么如何以 root 身份运行主 php 进程,以另一个非 root 用户身份运行 composerdeploy呢?

Update-1 我的 dockerfile 如下所示。所以你可以看到我没有安装内部dockerfile作曲家的包,而我在安装这些包容器一样docker exec -it php composer install

FROM php:7.2-fpm-alpine
..........................
..........................
..........................
RUN  set ex \
  # Install Composer( Requires git )
  && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin -- --filename=composer \
  ENTRYPOINT ["/entrypoint.sh"]
  CMD ["php-fpm"]
Run Code Online (Sandbox Code Playgroud)

我试图像https://unix.stackexchange.com/questions/476155/how-to-pass-multiple-parameters-to-su-user-c-command一样实现它,但徒劳无功。

php shell composer-php docker

7
推荐指数
1
解决办法
7409
查看次数

使用 cloud-Init 在 Azure 上安装 docker 和 docker-compose

我想通过 Docker 引导我的 Azure VM,并使用 cloud-init 进行 Docker-compose。到目前为止,我尝试了如下所示的方法。

#cloud-config

package_update: true
package_upgrade: true

groups:
  - docker: [default]

runcmd:
  - [ sh, -c, "curl -sSL https://get.docker.com/ | sh" ]
  - [ sh, -c, "sudo curl -L "https://github.com/docker/compose/releases/download/$(git ls-remote https://github.com/docker/compose | grep refs/tags | grep -oP "[0-9]+\.[0-9][0-9]+\.[0-9]+$" | tail -n 1)/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose" ]
  - [ sh, -c, "sudo chmod +x /usr/local/bin/docker-compose" ]
Run Code Online (Sandbox Code Playgroud)

但它没有安装 docker/ docker-compose 并出现以下错误

cloud-init[958]: 2019-02-28 00:51:02,447 - util.py[WARNING]: Failed loading yaml blob. Invalid format at line …
Run Code Online (Sandbox Code Playgroud)

azure cloud-init

7
推荐指数
1
解决办法
3944
查看次数

无法识别日志格式 - PhpStorm - Ideolog

我正在使用 MAMP + PhpStorm + Wordpress。Ideolog 说我的日志格式无法识别。请帮我配置一下。

我的日志格式:

[06-Feb-2020 15:42:09 UTC] PHP Warning:  mysqli_real_connect(): (HY000/2002): No such file or directory in /Volumes/Workspace/Mamp/wordpress/wp-includes/wp-db.php on line 1633
[06-Feb-2020 15:42:09 UTC] PHP Stack trace:
[06-Feb-2020 15:42:09 UTC] PHP   1. {main}() /Volumes/Workspace/Mamp/wordpress/wp-admin/admin-ajax.php:0
[06-Feb-2020 15:42:09 UTC] PHP   2. require_once() /Volumes/Workspace/Mamp/wordpress/wp-admin/admin-ajax.php:22
[06-Feb-2020 15:42:09 UTC] PHP   3. require_once() /Volumes/Workspace/Mamp/wordpress/wp-load.php:37
[06-Feb-2020 15:42:09 UTC] PHP   4. require_once() /Volumes/Workspace/Mamp/wordpress/wp-config.php:92
[06-Feb-2020 15:42:09 UTC] PHP   5. require_wp_db() /Volumes/Workspace/Mamp/wordpress/wp-settings.php:116
[06-Feb-2020 15:42:09 UTC] PHP   6. wpdb->__construct() /Volumes/Workspace/Mamp/wordpress/wp-includes/load.php:425
[06-Feb-2020 15:42:09 UTC] PHP   7. wpdb->db_connect() /Volumes/Workspace/Mamp/wordpress/wp-includes/wp-db.php:632 …
Run Code Online (Sandbox Code Playgroud)

regex phpstorm

7
推荐指数
1
解决办法
8714
查看次数

使用 docker-compose 部署 Portainer 和 Portainer Agent?

我按照他们的文档安装了 Portainer,如下所示:

version: '2'

services:
  portainer:
    image: portainer/portainer
    command: -H unix:///var/run/docker.sock
    restart: always
    ports:
      - 9000:9000
      - 8000:8000
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - portainer_data:/data

volumes:
  portainer_data:
Run Code Online (Sandbox Code Playgroud)

然而,我后来发现他们的文件浏览器功能只有Portainer代理支持。

我还发现了以下示例

version: '3.2'

services:
  agent:
    image: portainer/agent
    environment:
      # REQUIRED: Should be equal to the service name prefixed by "tasks." when
      # deployed inside an overlay network
      AGENT_CLUSTER_ADDR: tasks.agent
      # AGENT_PORT: 9001
      # LOG_LEVEL: debug
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /var/lib/docker/volumes:/var/lib/docker/volumes
    networks:
      - agent_network
    deploy:
      mode: global
      placement:
        constraints: [node.platform.os == …
Run Code Online (Sandbox Code Playgroud)

docker docker-compose portainer

4
推荐指数
1
解决办法
2万
查看次数

将 Xdebug 与 php-fpm 和 nginx 容器分开

我想将所有开发工具与主 php-fpm 和 nginx 容器分开。所以我基本上有3个名为php-fpm 的容器在端口 9000 上运行,nginx在端口 80 上运行,dev-tools。我已经在我的开发工具容器上安装了 xdebug、composer 等,但我很困惑如何配置 xdebug 以便它能够与 php-fpm 容器一起工作并可以调试我的网站?第二个问题 xdebug 需要 php-cli 或 php-fpm 才能运行吗?

#开发工具

FROM php:7.2-cli-alpine

# Install the PHP extensions we need
RUN set -ex \
    && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin -- --filename=composer.phar \
    && apk add --no-cache git \
    && pecl install xdebug \
    && docker-php-ext-enable xdebug
Run Code Online (Sandbox Code Playgroud)

php xdebug nginx docker devops

3
推荐指数
1
解决办法
2854
查看次数

如何获得URL的一部分?

如何从网址中删除除基本网址和第一部分以外的所有部分。零件数量不确定。基本网址是可变的。我尝试了一些正则表达式,但没有成功。

$url =  http://www.example.com/part1/part2/part3/part4;
base_url = parse_url($url, PHP_URL_HOST); // Outputs www.example.com

$desired_output = http://www.example.com/part1;
Run Code Online (Sandbox Code Playgroud)

php regex preg-replace regex-group regex-greedy

0
推荐指数
1
解决办法
57
查看次数