我尝试docker-compose up使用以下配置运行:
php:
    image: php:7.0-fpm
    expose:
        - 9000
    links:
        - nginx
nginx:
    env_file: .env
    image: nginx:latest
    ports:
        - 80:80
        - 433:433
    environment:
        - NGINX_HOST: ${APP_URL}
mysql:
    env_file: .env
    image: mysql:latest
    ports:
        - 3306:3306
    environment:
        - MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
        - MYSQL_DATABASE: ${DB_DATABASE}
        - MYSQL_USER: ${DB_USERNAME}
        - MYSQL_PASSWORD: ${DB_PASSWORD}
        - MYSQL_ALLOW_EMPTY_PASSWORD: no
我.env在同一目录中有一个文件,并且能够在 shell 中测试该变量,但 docker 似乎没有加载.env.
警告:未设置 APP_URL 变量。默认为空白字符串。
警告:未设置 DB_PASSWORD 变量。默认为空白字符串。
警告:未设置 DB_DATABASE 变量。默认为空白字符串。
警告:未设置 DB_USERNAME 变量。默认为空白字符串。
错误:文件“./docker-compose.yaml”中验证失败
更新
我只是将 …
environment-variables docker dockerfile docker-compose docker-build
我有 Dockerfile,我已经使用过很多次了,没有出现任何问题。现在我需要向其中添加一些包(ssmtp 和 sendmail),当我添加它们时,构建失败并显示:
Sending build context to Docker daemon 645.3 MB
Sending build context to Docker daemon 
Step 0 : FROM debian:jessie
 ---> 736e5442e772
Step 1 : MAINTAINER Larry Martell <larry.martell@foo.com>
 ---> Using cache
 ---> bd272aa26940
Step 2 : ENV HOME /opt/django/CAPgraph/
 ---> Using cache
 ---> 1c540ed91808
Step 3 : RUN echo "deb http://http.debian.net/debian jessie-backports main" >> /etc/apt/sources.list
 ---> Using cache
 ---> 8788d48e625d
Step 4 : RUN (apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential git python python-dev python-setuptools …几天来我一直在尝试构建一个大型 Windows docker 映像,但我无法在任何地方找到解决此问题的答案。
我并不是想构建生产容器解决方案。我只是想创建我的服务的原型,但在 Windows 容器中运行。问题是我的服务现在依赖于大约 40GB 的数据,并且该数据是从磁盘读取的。显然,这不是一个很好的方法,在我们可以在生产环境中的容器中托管服务之前,必须对其进行重构。
我只是想要一个快速而肮脏的解决方案,使用存储在容器磁盘上的所有数据构建图像,这样我就可以了解有关服务如何在容器内运行的更多信息。
我的图像结构最终看起来像这样:
微软/windowsservercore -> 我的/data_image -> 我的/binary_image
数据.docker文件:
FROM microsoft/windowsservercore
WORKDIR /data/
COPY data .
构建命令:
docker build --compress -t mine/data_image -f data.dockerfile .
一段时间后,构建失败并显示以下消息:无法复制文件:无法复制目录:写入 \?\Volume{8cf8bb9b-c1dd-46a3-b353-3c2198754bf8}\data: 磁盘上没有足够的空间。
我知道这与 windowsfilter 磁盘驱动程序有关,但我无法在网上找到有关此驱动程序的文档。就好像它不存在一样。
欢迎任何与此问题相关的见解!
我有一个在 amd64 上运行的 Dockerfile,但想在 arm64 上运行。由于 go build 工具将 GOARCH=arm64 作为参数,因此我不需要任何其他交叉编译工具来制作二进制文件。
# Run the build
FROM mojlighetsministeriet/go-polymer-faster-build
ENV WORKDIR /go/src/github.com/mojlighetsministeriet/email
COPY . $WORKDIR
WORKDIR $WORKDIR
RUN go get -t -v ./...
RUN CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build
# Create the final docker image
FROM scratch
COPY --from=0 /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
COPY --from=0 /go/src/github.com/mojlighetsministeriet/email/email /
ENTRYPOINT ["/email"]
问题是生成的图像被标记为错误的架构 amd64 而不是 arm64。如何将参数传递给 docker build 以便将 Architecture 设置为 arm64?
$ docker image inspect mojlighetsministeriet/email-arm64                            
[
    {
        "Id": "sha256:33bcd7da8631c7a0829d61cc53479a26ab7f31fab1cb039105de415ddc6178f3",
        "RepoTags": [
            "mojlighetsministeriet/email-arm64:latest"
        ],
        "RepoDigests": [ …我正在尝试构建一个 docker 容器(我的第一个容器)来为嵌入式设备设置交叉编译环境。
我包含了一个RUN执行脚本的语句,该脚本安装由嵌入式设备制造商提供的 SDK。我验证了,当在正在运行的 docker 容器中手动运行时,脚本成功完成,退出代码为 0。
但是,在 a 期间docker build,相同的脚本会打印其完成消息,然后再没有任何反应。以下RUN语句根本不会执行,构建也不会完成。我必须中止构建过程才能回到我的 shell。谁能想象为什么这个特定的 run 语句没有正确完成,即使执行的脚本成功退出?
有问题的dockerfile:
# origin of the image from the official docker hub
FROM ubuntu:trusty
# adding the SDK into the image
ADD tgur-access-sdk-v0.9.0.tar.gz /opt/
# installing necessary dependencies
RUN apt-get update && apt-get install -y \
    g++ \
    gcc \
    make \
    python2.7
# create symlink for python to ensure that the sdk install script succeeds
RUN ln -s /usr/bin/python2.7 …我正在尝试构建一个 docker 文件,它不断返回这部分的非零代码 100。有什么想法吗?
FROM php:7.1-fpm
RUN apt-get update && apt-get install -y libmcrypt-dev \
    mysql-client libmagickwand-dev --no-install-recommends \
    && pecl install imagick \
    && docker-php-ext-enable imagick \
    && docker-php-ext-install mcrypt pdo_mysql zip
假设我有这个图像标签“节点:9.2”,如FROM node:9.2...
在我实际尝试之前,是否有一个 API 可以查看带有标签“node:9.2”的图像是否存在并且可以检索docker build ...?
我有以下 Dockerfile:
FROM ubuntu:16.04
RUN apt-get update \
    && apt-get upgrade -y \
    && apt-get install -y \
    git \
    make \
    python-pip \
    python2.7 \
    python2.7-dev \
    ssh \
    && apt-get autoremove \
    && apt-get clean
ARG password
ARG username
ENV password $password
ENV username $username
RUN pip install git+http://$username:$password@org.bitbucket.com/scm/do/repo.git
我使用以下命令从这个 Dockerfile 构建镜像:
docker build -t myimage:v1 --build-arg password="somepassoword" --build-arg username="someuser" .
但是,在构建日志中,我传递的用户名和密码--build-arg是可见的。
Step 8/8 : RUN pip install git+http://$username:$password@org.bitbucket.com/scm/do/repo.git
 ---> Running in 650d9423b549
Collecting git+http://someuser:somepassword@org.bitbucket.com/scm/do/repo.git
如何隐藏它们?或者是否有不同的方式在 …
假设我在 Dockerfile 中有这样的行:
RUN git fetch origin my_branch
RUN pip install -r requirements.txt
有没有办法强制 docker 对这些行使用缓存?就像是:
FORCE-CACHE-ON
RUN git fetch origin my_branch
RUN pip install -r requirements.txt
CACHE-OFF
我尝试运行位于 shell 文件中的 dotnet 命令,该命令将在 docker 构建过程中由 dockerfile 调用。
\n\n这是 dockerfile 片段:
\n\nFROM ubuntu:16.04\nFROM microsoft/dotnet:2.2-sdk as build-env\n\n# .net core \nRUN apt-get update -y && apt-get install -y wget apt-transport-https\nRUN wget -q https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb && dpkg -i packages-microsoft-prod.deb\nRUN apt-get update -y && apt-get install -y aspnetcore-runtime-2.2=2.2.1-1\n\n# dotnet tool command\nRUN apt-get update -y && apt-get install dotnet-sdk-2.2 -y\n# for dot net tool #/sf/ask/3638423211/\nENV PATH="${PATH}:/root/.dotnet/tools"\n\n# Supervisor\nRUN apt-get update -y && apt-get install -y supervisor && mkdir -p /etc/supervisor\n\n# main script …docker ×10
docker-build ×10
dockerfile ×8
.net-core ×1
architecture ×1
arm64 ×1
debian ×1
shell ×1