用 docker 构建 laravel 开发环境

编写 dockerfile 现在 /composer 目录的所有权归属于 laraveluser。重新构建 Docker 镜像,然后运行容器。 按照以下步骤根据给定的 Dockerfile 构建镜像并运行实例: 第一步:构建 Docker … Read more

docker 实例连接本机 MySQL

对于 Docker Desktop for Mac 和 Windows,host.docker.internal 会自动解析为宿主机的 IP 地址。然而,在 Linux 上,Docker 默认不提供 host.docker.internal … Read more

docker 构建 mysql 服务101

构建 为了使用 Docker 构建一个 MySQL 5.7 服务,您需要遵循以下步骤: 完成以上步骤后,您现在可以在命令行中访问已经运行的 MySQL 5.7 服务。此外,其他应用程序也可以通过主机的 3306 端口访问该服务。 指定数据目 … Read more

docker 报Permission denied 解决方法

这个错误表明 Laravel 无法将日志写入 /var/www/html/storage/logs/laravel.log,可能确实是由于 Docker 容器内的文件权限问题导致的。要解决这个问题,请遵循以下步骤: 在这里,我们使用 use … Read more

docker 运行权限 101

Docker 容器中的权限管理对于确保应用程序安全性和避免潜在的权限问题非常重要。以下是有关 Docker 运行权限的一些关键概念: 这将使容器使用名为 www-data 的非 root 用户运行。当然,您需要确保该用户存在且具有访问所需资 … Read more

不要用 sudo 运行 docker

要在执行 Docker 命令时不使用 sudo,您需要将当前用户添加到名为 docker 的组中。以下是在 Linux 系统上执行此操作的步骤: 现在,您应该能够在不使用 sudo 的情况下执行 Docker 命令了。这些更改仅适用于当前用 … Read more

TensorFlow 容器支持 GPU

一台 GPU 机器,直接访问 gpu 是没有问题的,但是安装 tensorflow 后,一直访问不到 GPU,看了一下 TensorFlow 支持容器化安装,是可以支持 GPU 的。 tensorflow 容器化安装步骤 前提 必须先在宿主 … Read more

我在 Docker 上犯的错误

今天犯了一个错误,犯这个错误的原因是没有理解 docker 的设计哲学,大概花了 3 个小时来折腾一个事情。

起因

一个容器没有安装 python 的一些依赖库,我在容器里面安装了依赖库,不想每次都安装这些依赖库,所以我想把这个容器保存成新的镜像。

错误的方法

有两种方式来解决这个问题。
方式一,构建新的 Dockerfile。
方式二,对一个正在运行的容器,通过 commit 来创建新的镜像。

反思

我选择了方式二,我把容器当虚拟机使了,这是没有理解 Docker 设计的哲学。

找了一文章,这文章总结的很好,有利于我去了解 docker 的设计哲学,我就把他翻译在下面。

使用 Docker 不要做的几件事情

所以你最终屈服于容器,发现它们解决了很多问题并且有很多优势

  1. 第一:容器是不可变的——操作系统、库版本、配置、文件夹和应用程序都包含在容器中。您保证在 QA 中测试过的相同镜像将以相同的行为到达生产环境。
  2. 第二:容器是轻量级的——容器的内存占用很小。容器将只为主进程分配内存,而不是数百或数千 MB。
  3. 第三:容器速度快——您可以像启动典型的 Linux 进程一样快地启动容器。您可以在几秒钟内启动一个新容器,而不是几分钟。

然而,许多用户仍然像对待典型的虚拟机一样对待容器,而忘记了容器有一个重要的特性:容器是一次性的。
“容器是短暂的”。

这种特性迫使用户改变他们应该如何处理和管理容器的思维方式;我将解释您应该做的事情以继续发挥容器的最大优势:

Read more

Laravel Docker Centos8 使用

fanyi 这个小工具,以前是直接跑在腾讯云的轻量服务器上的,用 Golang 写的,最近加了一个小功能,用 php 重写了,php 就要搭建各种环境,直接在腾讯云的轻量服务器上编译 php 不成功,主要是你 cpu 高,他就直接给你 kill 了,所以就用 docker 来解决。

构建 PHP 的运行环境

从 php:8.1-fpm 开始构建,安装上相关依赖,然后设置运行用户的相关权限。

vim Dockerfile
FROM php:8.1-fpm

# Arguments defined in docker-compose.yml
ARG user
ARG uid

# Install system dependencies
RUN apt-get update && apt-get install -y \
    git \
    curl \
    libpng-dev \
    libonig-dev \
    libxml2-dev \
    zip \
    unzip

# Clear cache
RUN apt-get clean && rm -rf /var/lib/apt/lists/*

# Install PHP extensions
RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd

# Get latest Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

# Create system user to run Composer and Artisan Commands
RUN useradd -G www-data,root -u $uid -d /home/$user $user
RUN mkdir -p /home/$user/.composer && \
    chown -R $user:$user /home/$user


# Set working directory
WORKDIR /var/www

USER $user

Read more