#docker #codeigniter #docker-compose
#docker #codeigniter #docker-compose
Вопрос:
Я очень новичок в Docker, и у меня есть проект CodeIgniter, над которым я работал через свой локальный хост (XAMPP) до сих пор. Теперь я хочу разместить свой проект в Docker, используя GCP.
Может ли кто-нибудь дать рекомендации относительно того, как я мог бы написать docker-compose.yml для контейнеризации проекта с помощью контейнеров redis, php, mysql и nginx? Кроме того, как мне нужно структурировать мой проект CI, чтобы он работал?
Комментарии:
1. Вы можете попробовать hub.docker.com/r/bitnami/codeigniter
2. Спасибо за предупреждение @TekNath, я думаю, было бы неплохо узнать, как это сделать вручную
3. Смотрите ibexoft.com/setup-codeigniter-docker-container-for-development за инструкциями.
Ответ №1:
Я ежедневно использую 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 amp;amp;
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/
amp;amp; docker-php-ext-install gd
RUN service apache2 restart
my site.conf
<VirtualHost *:80>
DocumentRoot "/var/www/html/app/public/"
ServerName ci4.local
<Directory "/var/www/html/app/public/">
AllowOverride all
</Directory>
</VirtualHost>
В моей серии YouTube о codeigniter 4 я создал репозиторий github, который отражает эту структуру:
Комментарии:
1. Вау, хорошо, спасибо за помощь. Очень признателен.
Ответ №2:
Я столкнулся с этим вопросом, когда изучал docker, и хотел оставить обновление здесь. Я использую bitnami / codeigniter3. Это было легко для меня, поскольку мне не нужно было переносить мое приложение на Codeigniter 4.
Комментарии:
1. Этот контейнер также будет работать для codeigniter 3.
Ответ №3:
Недавно у меня возникли проблемы с тем же, но каким-то образом я понял это и использовал приведенный ниже код. Кроме того, я настроил MySQL на другой порт, поскольку я запускал другое приложение на 3306.
version: "1.0"
services:
webserver:
image: thecodingmachine/php:7.4-v3-apache-node12
container_name: test-webserver
working_dir: /var/www/html
environment:
PHP_EXTENSIONS: apcu pdo_mysql opcache redis zip gd yaml exif xdebug
PHP_EXTENSION_GD: 1
PHP_EXTENSION_MYSQLI: 1
APACHE_DOCUMENT_ROOT: app
APACHE_RUN_GROUP: www-data # use www-data user in container.. which is also used on most webservers for deployer
APACHE_RUN_USER: www-data
PHP_EXTENSION_XDEBUG: 1
depends_on:
- mysql
volumes:
- ./:/var/www/html
- ~/.ssh:/root/.ssh
stdin_open: true
tty: true
ports:
- "9090:80"
mysql:
image: mysql:5.7
container_name: test-mysql
restart: unless-stopped
ports:
- "3307:3307"
expose:
- 3307
environment:
MYSQL_ROOT_PASSWORD: MYSQL_ALLOW_EMPTY_PASSWORD
MYSQL_DATABASE: test-db
MYSQL_USER: testuser
MYSQL_PASSWORD: password
MYSQL_TCP_PORT: 3307
phpmyadmin:
image: phpmyadmin/phpmyadmin
restart: unless-stopped
container_name: test-phpadmin
environment:
PMA_HOST: mysql
PMA_USER: testuser
PMA_PASSWORD: password
PMA_PORT: 3307
UPLOAD_LIMIT: 300M
ports:
- 9091:80
Кроме того, добавлено в мое репозиторий github. Включенный код git содержит некоторый прокомментированный код для CI4.