docker 部署PHP網頁

2021-10-06 04:47:36 字數 3450 閱讀 1454

準備好兩個映象

然後建立兩個容器:

docker  run --name=

"apachedemo" -p 80:80 -d nimmis/apache-php5

docker run --name mysqldemo -p 3306:3306 -e mysql_root_password=password -d mysql/mysql-server:latest

docker ps 檢視兩個容器的狀態,如果docker ps 沒有說明容器沒有起來。

docker ps 預設檢視的是正在執行的容器。

然後在遊覽器輸入docker 宿主機的ip;docker 安裝環境的ip;

(比如:虛擬機器裡面安裝linux,linux裡面安裝docker ,你要訪問網頁應該輸入linux的ip);

出現如下介面,則表示apache服務安裝沒有問題。

​ 在linux上新建乙個php 檔案,這裡我命名為 demo.php

輸入一下內容。

ip位址根據自己的ip修改。

<?php 

header

("content-type: text/html;charset=utf-8");

echo"";

$servername

="192.168.43.227"

;$username

="root"

;$password

="password"

;$dbname

="book"

;$conn

=mysqli_connect

('192.168.10.9'

,'root'

,'root')or

die(

"error:"

.mysqli_connect_error()

);mysqli_select_db

($conn

,'book');

$sql

="select * from student"

;$result

=mysqli_query

($conn

,$sql);

while

($row

=mysqli_fetch_array

($result))

?>

第一次訪問可能會出現一下的錯誤:

這是因為mysql 沒有開啟遠端登入許可權。

我們進入mysql容器修改相應的許可權。

docker exec -it 1ed50ef86354  /bin/bash
docker exec -it 加容器id或者容器名字可以進入docker容器內。

exit 退出容器。

mysql -uroot -ppassword 登入mysql

use mysql;

select user, host from user;

update user set host = '%' where user = 'root';

flush privileges;

順便再建立乙個表

create   database  book;

use book;

create table student (id int ,name varchar(20));

insert into student values(1,'joy'),(2,'tom'),(3,'james');

再次訪問會出現如下錯誤:

server sent charset unknown to the client. please, report to the developers

這是因為mysql最新版的字元預設字元編碼 utf8mb4,所以我們要設定mysql的預設字符集為老版本的utf8

還是在mysql容器內執行

mysql --help | grep my.cnf

檢視mysql配置檔案的路徑那。

我安裝的mysql-service精簡到了連vi和vim也沒有,所以需要自己手動安裝。用yum安裝就好了。由於沒有配置yum源所以會很慢。

修改/etc/my.cnf

[client]

default-character-set=utf8

[mysql]

default-character-set=utf8

[mysqld]

collation-server = utf8_unicode_ci

character-set-server = utf8

default_authentication_plugin=mysql_native_password

修改配置檔案後重啟一下mysql 服務。

退出到linux 系統,執行docker restart mysqldemo

再次進入遊覽器,報錯 the server requested authentication method unknown to the client。

是由於使用者身份認證的加密方式不相容導致的,mysql8.0中預設方式為caching_sha2_password,引起老版本相容性問題,老版本加密方式為mysql_native_password

alter user 'root'@'localhost' identified with mysql_native_password by '你的密碼'

;我們這裡修改為

alter user 『root』@』%』 identified with mysql_native_password by 『password』;

然後再次訪問:

docker部署 docker環境部署mysql

蘇軾 這裡我拉取了tag為5.7的映象 docker pull mysql 5.7因為需要自定義mysql的配置,所以需要乙個配置目錄 因為需要將mysql生成的資料掛載到本地,所以需要乙個資料目錄 建立mysql 資料目錄mkdir p root mysql data 建立配置檔案 touch r...

docker部署部署心得

一 涉及檔案 centos centos7.tar.gz docker中centos映象壓縮包 docker.tar.gz docker 安裝包 jre 8u131 linux x64.rpm 生成cloudlicense映象時要用到 由於找不到openjdk,安裝映象,用這個替代 dockerfi...

Docker 使用Docker部署Node服務

docker 是乙個開源的容器引擎。開發者可以將自己的應用以及依賴打包為乙個可移植的容器,然後發布到 linux 機器上。它類似於乙個輕量級的虛擬機器,極大地方便了使用者在伺服器端部署和管理應用環境。apt install docker.io安裝成功後檢視docker版本 建立package.jso...