一边把容器建立起来,一边看有没有什麽地方要修改的~
跟着Multi container apps,先把多个容器要连结的network建立起来。
docker network create cake-app
接着用docker network ls 就可以看到有个name叫做cake-app的network被建立起来了,预设的Driver是bridge,这边可以用 -d的方式修改成overlay
If you want to create a network that spans multiple Docker hosts each running an Engine, you must create an overlay network.
overlay模式是用在多部实体主机的状况下,之後有时间再来试试@@
根据官方提供的command小改一下,mysql的tag成最新版的8.0
docker run -d --name cont1-mysql \
--network cake-app --network-alias mysql \
-v cake-mysql-data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=secret \
-e MYSQL_DATABASE=cake \
mysql:8.0
Mysql - Official Image | Docker Hub
根据官方image说明,-v所创的资料夹对应到container内用来存放data的资料夹。另外这个container只会用来做资料库,所以只使用root,设定他root的密码
可以看到container被建立起来了~
检查了cake这个database确实存在。
nicolaka/netshoot (https://github.com/nicolaka/netshoot)
为了要连接mysql容器里的资料库,需要用到这个管理网路功能的容器。
docker run -it \
--name netToolsInCake --network cake-app nicolaka/netshoot
会看到这个画面:
dig mysql
Inside the container, we’re going to use the dig command, which is a useful DNS tool. We’re going to look up the IP address for the hostname mysql.
所以这边的mysql是指前面设定的--network-alias mysql,因此我们确实可以知道network里面是有这个container的,而且可以利用network-alias来指定到这个ip,对container做操作。
大概会是比较复杂的部份,先看一下官方的run怎麽写的…
docker run -dp 3000:3000 \
-w /app -v "$(pwd):/app" \
--network todo-app \
-e MYSQL_HOST=mysql \
-e MYSQL_USER=root \
-e MYSQL_PASSWORD=secret \
-e MYSQL_DB=todos \
node:12-alpine \
sh -c "yarn install && yarn run dev"
先试一个版本:-dp的部分应该会沿用,port改成8081:80。phpmyadmin的部分 -w跟-v应该用不到先省略好了。
docker run --name cont2-phpmyadmin --network cake-app -p 8081:80 phpmyadmin/phpmyadmin:latest
跑出来的结果是这样
Status: Downloaded newer image for phpmyadmin/phpmyadmin:latest
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.18.0.3. Set the 'ServerName' directive globally to suppress this message
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.18.0.3. Set the 'ServerName' directive globally to suppress this message
[Fri Sep 17 14:31:34.695089 2021] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.38 (Debian) PHP/7.4.20 configured -- resuming normal operations
[Fri Sep 17 14:31:34.695152 2021] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'
使用docker建立apache2服务器的时候,十之八九都有servername的问题,用httpd、phpmyadmin、cakephp都是……
echo "ServerName localhost" >> /etc/apache2/apache2.conf
通常我用localhost,之後这点要写到dockerfile才行。
先进到http://localhost:8081/index.php 试着用root登入看看
跑出了警告QQ
虽然这只是个阳春版,但还是要确认一下是不是有其他问题,因此明天再来整理看看为什麽不能set session cookie。
<<: 从 IT 技术面细说 Search Console 的 27 组数字 KPI (17) :结构化资料(收录)
>>: 【後转前要多久】# Day02 HTML - 基本观念复习
资通安全责任等级 依照资通安全责任等级分级办法,由主管机关核定相对应之等级,按照等级决定导入系统之...
连续 30 天不中断每天上传一支教学影片,教你如何用 React 加上 Firebase 打造社群...
前言 前一天我们有稍微提到安全性演算法的其中一个,也就是今天的主题「共同金钥密码系统」(shared...
前言 HTML5 的 Web Storage 是一种可让网页将资料储存於本地端的技术,其作用如同 c...
这周新接触到 PHP 和 MySQL,然後是第一次使用到 session 机制实作登入功能 我自己的...