git地址
语法
dockerfile保留字说明:
FROM 指定基础镜像
ARG 定义构建时需要的参数,可在docker build --build-arg key=value时传入相应的键值对,ARG仅在build镜像时有效,镜像被创建和容器启动后无效
ENV 构建镜像过程中设置环境变量
RUN 构建时需要运行的命令
WORKDIR 指定创建容器后,终端默认登录进来的工作目录
docker-compose.yml 语法说明
卷宗挂载 :rw 读写 :ro 只读
${xxxx} 从.env文件读取变量
Nginx
docker compose
docker-compose.yml
nginx:
build:
#dockerfile在哪里
context: ./services/nginx
#配置参数
#args会传入dockerfile的ARG中,等效于docker build --build-arg
args:
#Nginx版本
# NGINX_VERSION nginx:1.19.1-alpine
NGINX_VERSION: nginx:${NGINX_VERSION}
#容器包路径
#CONTAINER_PACKAGE_URL mirrors.aliyun.com
CONTAINER_PACKAGE_URL: ${CONTAINER_PACKAGE_URL}
#Nginx安装包
#NGINX_INSTALL_APPS 空
NGINX_INSTALL_APPS: ${NGINX_INSTALL_APPS}
#容器名
container_name: nginx
#端口映射 冒号左边是本地端口 冒号右边是容器端口
ports:
- "${NGINX_HTTP_HOST_PORT}:80"
- "${NGINX_HTTPS_HOST_PORT}:443"
//卷宗挂载 (:rw表示读写 :ro表示只读)
volumes:
#宿主机的该yml文件所在目录的上一层 映射 容器的/www
- ${SOURCE_DIR}:/www/:rw
#ssl证书存放路径
- ${NGINX_SSL_CERTIFICATE_DIR}:/ssl:rw
#Nginx配置文件存放目录
- ${NGINX_CONFD_DIR}:/etc/nginx/conf.d/:rw
#nginx配置文件
- ${NGINX_CONF_FILE}:/etc/nginx/nginx.conf:ro
#fastcgi配置文件
- ${NGINX_FASTCGI_PHP_CONF}:/etc/nginx/fastcgi-php.conf:ro
#fastcgi参数
- ${NGINX_FASTCGI_PARAMS}:/etc/nginx/fastcgi_params:ro
#nginx日志存放目录
- ${NGINX_LOG_DIR}:/var/log/nginx/:rw
#环境变量
environment:
#时区
TZ: "$TZ"
#容器挂了是否重启
restart: always
#将容器加入某个网络
networks:
- default
Dockerfile
#从docker build --build-arg 读取NGINX_VERSION的值
ARG NGINX_VERSION
#基于 nginx:1.19.1-alpine镜像
FROM ${NGINX_VERSION}
ARG TZ
ARG NGINX_VERSION
ARG CONTAINER_PACKAGE_URL
ARG NGINX_INSTALL_APPS
ENV INSTALL_APPS=",${NGINX_INSTALL_APPS},"
RUN if [ "${CONTAINER_PACKAGE_URL}" != "" ]; then \
sed -i "s/dl-cdn.alpinelinux.org/${CONTAINER_PACKAGE_URL}/g" /etc/apk/repositories; \
fi
RUN if [ -z "${INSTALL_APPS##*,certbot,*}" ]; then \
echo "---------- Install certbot ----------"; \
apk add --no-cache certbot; \
fi
#进入容器(e.g.docker exec -it xxx sh)后所在的目录
WORKDIR /www