docker - 如何使用 Docker 容器化 CodeIgniter 项目?

标签 docker codeigniter docker-compose

我对 Docker 很陌生,我有一个 CodeIgniter 项目,到目前为止我一直在通过我的本地主机(XAMPP)进行工作。我现在想使用 GCP 在 Docker 上托管我的项目。
谁能就我如何编写 docker-compose.yml 以使用 redis、php、mysql 和 nginx 容器对项目进行容器化提供指导?另外,我需要如何构建我的 CI 项目才能使其工作?

最佳答案

我每天使用 docker 和 Codeigniter 4。这是我的结构,尽管在我的结构中我既没有使用 redis 也没有使用 nginx。我正在使用 apache。
文件夹结构:

.database
.docker
  |php
     |sites-available
       |site.conf
     |Dockerfile
  |custom.ini
  |docker-compose.yml
.git
app
  |app
  |public
  |tests
  |vendor
  |writable
  |.env
  |composer.json
  |composer.lock
  |spark
.gitignore
至于配置文件,这里是 docker-compose.yml
version: '3'
services:
    web:
        container_name: ci4-web
        build:
            context: ./php
        ports:
            - 80:80
        volumes:
            - ../app:/var/www/html/app/
            - ./custom.ini:/usr/local/etc/php/conf.d/custom.ini
        links:
            - mysql
        depends_on:
          - mysql
    mysql:
        container_name: db-ci4
        image: mysql:latest
        volumes:
            - ./db:/var/lib/mysql
        command: --default-authentication-plugin=mysql_native_password
        ports:
            - 3306:3306
        environment:
            MYSQL_ROOT_PASSWORD: root
Dockerfile
FROM php:7.2-apache
RUN apt-get update && \
    apt-get install -y
RUN apt-get install -y curl
RUN apt-get install -y build-essential libssl-dev zlib1g-dev libpng-dev libjpeg-dev libfreetype6-dev
RUN apt-get install -y libicu-dev
COPY sites-available/elioter.conf /etc/apache2/sites-enabled/elioter.conf
RUN apt-get update
RUN docker-php-ext-install intl
RUN docker-php-ext-configure intl
RUN docker-php-ext-install mysqli pdo pdo_mysql zip mbstring
RUN a2enmod rewrite
RUN docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
    && docker-php-ext-install gd
RUN service apache2 restart
我的网站.conf
<VirtualHost *:80>
    DocumentRoot "/var/www/html/app/public/"
    ServerName ci4.local
    <Directory "/var/www/html/app/public/">
        AllowOverride all
    </Directory>
</VirtualHost>
在我关于 codeigniter 4 的 youtube 系列中,我创建了一个反射(reflect)这种结构的 github 存储库:
  • https://github.com/mpmont/ci4-screencasts
  • https://github.com/mpmont/tilthings-ci4-contact-manager
  • https://www.youtube.com/channel/UC9HQjernJPHN-RoKMwtYQ4w
  • 关于docker - 如何使用 Docker 容器化 CodeIgniter 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64371440/

    相关文章:

    docker - 如何从另一个容器的公共(public)地址访问反向代理后面的 docker 容器

    docker - Heroku和Google Cloud Run上的HTTP请求不同

    docker - 在运行docker-compose run时始终包含参数

    php - codeigniter:使用 htaccess 保护 Controller

    php - 在 Codeigniter 中显示基于先前下拉列表的第二个下拉列表

    django - docker nginx无法与Web容器建立连接

    docker - docker-compose up是否破坏旧数据库?

    postgresql - Spring Boot Docker 容器无法连接到 Docker 主机上托管的 postgresql

    azure - 如何从 Azure 容器应用程序读取环境变量

    具有加密 URL 的 CodeIgniter