本文最后更新于 96 天前,其中的信息可能已经过时,如有错误请留言。
学习记录
以构建wordpress镜像为例
dockerfile基本语法
1.FROM 指定基础镜像
2.RUN 执行命令
3. ADD和COPY都将宿主机的文件复制到镜像里,COPY 只支持纯复制文件,ADD支持压缩文件自动解压
4.WORKDIR 设置工作目录
5.ENV 设置环境变量
6.EXPOSE 声明镜像暴露的端口
7.CMD 指定容器启动时执行的命令,CMD指令只能有一条
8.ENTRYPOINT用来指定容器启动时要执行的命令,不会被启动容器时指定的参数所替代,可以有多条
安装配置docker
编辑dockerfile
mkdir wp && cd wp
tee Dockerfile <<-'EOF'
FROM rockylinux:9.3
WORKDIR /root/wp
##nginx
COPY ./nginx.repo /etc/yum.repos.d/
RUN yum install -y epel-release nginx
RUN rm -rf /etc/nginx/conf.d/*
COPY ./cll.conf /etc/nginx/conf.d/
##php
RUN mkdir -p /run/php-fpm && chown -R nginx.nginx /run/php-fpm && chmod -R 755 /run/php-fpm
RUN yum install -y php php-fpm php-cli \
php-common php-devel php-embedded php-gd php-mcrypt php-bcmath php-mbstring php-pdo php-xml \
php-mysqlnd php-opcache php-pecl-zip php-pecl-redis php-pecl-mongodb
RUN sed -i '/^user/c user = nginx' /etc/php-fpm.d/www.conf && sed -i '/^group/c group = nginx' /etc/php-fpm.d/www.conf && sed -i '/^listen =/c listen = 127.0.0.1:9000' /etc/php-fpm.d/www.conf
ADD wordpress-6.5.3-zh_CN.tar.gz /usr/share/nginx
RUN chown -R nginx.nginx /usr/share/nginx/wordpress
ENV DBPASS=123456
EXPOSE 80 3306 443
EOFRYPOINT ["start.sh"] in/start.sh
EOF
准备nginx配置文件
tee cll.conf <<-'EOF'
server {
listen 80;
server_name localhost;
root /usr/share/nginx/wordpress;
#配置客户端请求体最大值
client_max_body_size 20M;
#配置请求体缓存区大小
client_body_buffer_size 20M;
location / {
index index.php index.html;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
EOF
编写nginx,php启动脚本
tee start.sh <<-'EOF'
#!/bin/bash
set -e
# 启动 PHP-FPM
php-fpm &
# 启动 Nginx
exec nginx -g "daemon off;"
EOF
构建镜像
docker build -t wordpress:v1 .
拉去mysql 8.0镜像并启动
docker pull mysql:8.0
docker run -itd -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=wordpress --name mysql mysql:latest
启动镜像
容器互联方式
docker run -itd --link mysql -p 80:80 --name web wordpress:v1 /bin/bash
查看运行容器
docker ps