作为一名 Docker
忠实用户,感觉 docker 真是太好用啦,万物皆可 docker,我的所有项目都是用 docker 跑的,给大家分享一下我的使用心得
build
命令
docker run -itd \
-e XRAY_VMESS_AEAD_FORCED=false \
-v $PWD/db/:/etc/x-ui/ \
-v $PWD/cert/:/root/cert/ \
--network=host \
--restart=unless-stopped \
--name 3x-ui \
--build https://github.com/MHSanaei/3x-ui.git
这里的 build
命令会远程拉取 3x-ui 的仓库代码,类似于 git clone
到一个临时目录,并根据仓库中的 Dockerfile
进行编译然后运行。启动成功后会自动删除刚刚下载的代码。
这样就很方便编译远程项目并运行,同时不占用空间。很适合有洁癖的用户。
同样也适用于docker-compose
services:
3x-ui:
build: https://github.com/MHSanaei/3x-ui.git
container_name: 3x-ui
environment:
- XRAY_VMESS_AEAD_FORCED=false
volumes:
- ./db:/etc/x-ui
- ./cert:/root/cert
network_mode: host
restart: unless-stopped
当然也可以指定仓库的分支
build: https://github.com/MHSanaei/3x-ui.git#dev
ADD
命令
还有就是 Dockerfile
里的 ADD
命令,这个命令支持远程下载文件,类似于 wget
,同时也可以当复制用,同时带有自动解压功能,这样就可以不用在构建镜像时安装wget
,unzip
这些工具,可以优化镜像大小。示例:
FROM php:8.1-apache
WORKDIR /var/www/html
# 下载远程脚本并赋予执行权限
ADD https://example.com/install.sh /var/www/html/install.sh
RUN chmod +x /var/www/html/install.sh && /var/www/html/install.sh
# 复制本地目录的 epay.tar 源码压缩包到容器中并自动解压
ADD ./epay.tar .
# 修改所有文件的所有者为 www-data 用户和组
RUN chown -R www-data:www-data /var/www/html
EXPOSE 80
# 启动 Apache 服务
CMD ["apache2-foreground"]
多阶段构建的 --from
命令
多阶段构建的 --from
命令不仅支持复制上一阶段的构建成果,同时也支持直接复制别人镜像里的成果,会先拉取别人的镜像,然后将别人镜像里指定目录里的文件复制到我们的镜像,然后自动删除别人的镜像,示例:
FROM webdevops/php-nginx:8.0-alpine
WORKDIR /app
# 将 weikedata/acgfaka 镜像里的 /app/www 目录下的源码文件复制到我们镜像里的 app 目录
COPY --from=weikedata/acgfaka /app/www /app
RUN chown -R www-data:www-data /app && \
chmod -R 775 /app && \
chmod -R 777 /app/config /app/data /app/uc_client /app/uc_server
EXPOSE 80
USER www-data
CMD ["supervisord"]
正文完