docker安裝apache、mariadb、php

在docker安裝Apache php及Mariadb服務,可以快速部署安裝於多種OS,不管是在開發或是正式上線環境都可以一樣。

images使用是官方的apache php 7.2版本;mariadb:latest,其中apache-php部份還需要另外安裝mysqli擴展套件。

《Docker —— 從入門到實踐-》正體中文版

指令如下

資料庫部份

sudo docker search mariadb
sudo docker pull mariadb
sudo docker run -d --name mariadb -e MYSQL_ROOT_PASSWORD=youpass --restart unless-stopped mariadb

參數–restart unless-stopped可以讓os在重開機時自動啟動docker container,不過自已下指令停止時不會自動再啟動

資料庫建立可直接進入docker內部利用mysql client建立

sudo docker exec -ti mariadb bash
mysql -u root -p
yourpass
create database test;

apache及php部份

先建立一個空間,等等要跟docker共用,如此可以把程式放在os的指定位置裡

mkdir -p /opt/www-data

下載images

sudo docker search php
sudo docker php:7.2-apache

版本可以參考 docker_php

啟動docker container後進入docker container裡安裝擴充套件mysqli

sudo docker run -d --name apache --restart unless-stopped -p 80:80 -v /opt/www-data:/var/www --link mariadb:mariadb php:7.2-apache
sudo docker exec -ti apache sh
>> docker-php-ext-install mysqli
>> docker-php-ext-enable mysqli
>> apachectl restart

也可以直接使用我commit的版本,然後直接run起來守備狀態

sudo docker pull catyku/php-mysqli:docker pull catyku/php-mysqli:7.2-apache
sudo docker run -d --name apache --restart unless-stopped -p 80:80 -v /opt/www-data:/var/www --link mariadb:mariadb catyku/php-mysqli:7.2-apache

因為有link mariadb的docker container所以我們可以直接連線mariadb

撰寫程式測試

sudo nano /opt/www-data/index.php
<?php
$db = new mysqli('mariadb', 'root', 'youpass', 'test');
if (mysqli_connect_errno())
{
echo '<p>' . 'Connect DB error';
exit;
}
else
{
echo "Connection success";
}
?>

測試

http://yourip/

補充

如果不想每次執行docker都要加入sudo可以建立一個docker group,把使用者加入這個group就可以了
#如果沒group docker就建立一個

sudo groupadd docker

#將使用者加入group docker

sudo gpasswd -a ${USER} docker

#重啟docker服務

sudo gpasswd -a ${USER} docker

#轉換使用者帳號group為group docker

newgrp - docker

如果之前已經利用sudo執行過docker image了,那可能會出現

WARNING: Error loading config file: /home/username/.docker/config.json: stat /home /username/.docker/config.json: permission denied

這時候就需要授權.docker這目錄權限及owner

sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
sudo chmod g+rwx "/home/$USER/.docker" -R

One thought to “docker安裝apache、mariadb、php”

  1. 都會發生這個錯誤 Error response from daemon: oci runtime error: container_linux.go:235: starting container process caused “chdir to cwd (\”/var/www/html\”) set in config.json failed: no such file or directory”.

發表迴響