标签: dockerfile

在文件更改时重建Docker容器

为了运行ASP.NET Core应用程序,我生成了一个dockerfile,它构建应用程序并在容器中复制源代码,Git使用Jenkins获取该代码.所以在我的工作区中,我在dockerfile中执行以下操作:

WORKDIR /app
COPY src src
Run Code Online (Sandbox Code Playgroud)

虽然Jenkins使用Git正确更新主机上的文件,但Docker不会将此应用于我的图像.

我建立的基本脚本:

#!/bin/bash
imageName=xx:my-image
containerName=my-container

docker build -t $imageName -f Dockerfile  .

containerRunning=$(docker inspect --format="{{ .State.Running }}" $containerName 2> /dev/null)

if [ "$containerRunning" == "true" ]; then
        docker stop $containerName
        docker start $containerName
else
        docker run -d -p 5000:5000 --name $containerName $imageName
fi
Run Code Online (Sandbox Code Playgroud)

我尝试不同的东西像--rm--no-cache参数docker run,并停止/删除容器之前,新的一个是建立.我不确定我在这里做错了什么.似乎docker正在更新图像,因为调用COPY src src会导致图层ID并且没有缓存调用:

Step 6 : COPY src src
 ---> 382ef210d8fd
Run Code Online (Sandbox Code Playgroud)

更新容器的推荐方法是什么?

我的典型场景是:应用程序在Docker容器中的服务器上运行.现在部分应用程序已更新,例如通过修改文件.现在容器应该运行新版本.Docker似乎建议构建一个新的映像而不是修改现有的容器,所以我认为像我这样重建的一般方法是正确的,但实现中的一些细节必须得到改进.

git jenkins docker dockerfile asp.net-core

56
推荐指数
2
解决办法
7万
查看次数

docker 中的错误:网络“路径”声明为外部,但无法找到

我是码头工人的新手。我被分配了一个使用 Docker 容器进行开发的任务。我按照在 Windows 10 上安装 Docker 和容器的教程进行操作,但出现以下错误:network remaxmdcrm_remaxmd-network declared as external, but could not be found

到目前为止我已经完成的步骤是:

  1. 从 GitHub 克隆存储库。
  2. 在我的笔记本电脑上安装了 Docker。
  3. 安装 Docker 后,我进入项目的根目录并运行以下命令。docker-compose build -d -t docker-compose.yml- docker-compose.yml 是根目录中的文件。
  4. 我打开 Docker 应用程序并运行创建的图像。
  5. 我运行了命令docker-compose up。当我运行此命令时,出现我在开头指定的错误。network remaxmdcrm_remaxmd-network declared as external, but could not be found

docker-compose.yml

services:
    ui:
        build:
            context: .
            dockerfile: Dockerfile.development
        volumes:
            - .:/app
        ports:
            - "5000:5000"
        restart: unless-stopped
        networks:
            - remaxmdcrm_remaxmd-network

    redis:
        image: 'redis:alpine'
        networks:
            - remaxmdcrm_remaxmd-network
networks:
    remaxmdcrm_remaxmd-network:
        external: …
Run Code Online (Sandbox Code Playgroud)

docker dockerfile docker-compose

56
推荐指数
3
解决办法
9万
查看次数

apt-get install tzdata noninteractive

当我尝试

apt-get install -y tzdata
Run Code Online (Sandbox Code Playgroud)

显示选择时区的命令行选项.我试图在脚本中使用它来进行一些设置,如何在没有用户输入的情况下运行apt-get?

我知道要重新配置我能做的tzdata

echo "America/New_York" > /etc/timezone
dpkg-reconfigure -f noninteractive tzdata
Run Code Online (Sandbox Code Playgroud)

但是在安装时我需要它完全运行,即使它没有设置正确的时区,我总是可以重新配置它.

我试过了

echo 5 | apt-get install -y tzdata
Run Code Online (Sandbox Code Playgroud)

但它没有按预期工作.

bash ubuntu apt-get dockerfile

55
推荐指数
5
解决办法
3万
查看次数

如何在Dockerfile中编写多行命令,同时保留新行?

我想在Dockerfile中编写以下RUN命令.但是,docker并没有保留新的线条.

RUN echo "[repo] \
name            = YUM Repository \
baseurl         = https://example.com/packages/ \
enabled         = 1 \
gpgcheck        = 0" > /etc/yum.repos.d/Repo.repoxyz
Run Code Online (Sandbox Code Playgroud)

我知道\在每一行的末尾都会逃脱新行.但是,有什么方法可以写多行来保留新行吗?

docker dockerfile

54
推荐指数
5
解决办法
4万
查看次数

如何在Dockerfile中为docker容器设置bash别名?

我是码头工人的新手.我发现我们可以使用Dockerfile中的ENV指令设置环境变量.但是如何在Dockerfile中为长命令设置bash别名呢?

unix bash alias docker dockerfile

53
推荐指数
4
解决办法
4万
查看次数

Docker Service和Docker Container有什么区别?

我们什么时候使用docker service create命令,什么时候使用docker run命令?

docker dockerfile docker-compose

53
推荐指数
6
解决办法
3万
查看次数

Dockerfile:在单行中设置多个环境变量

我的印象是环境变量可以在一行上设置如下,以便最小化中间图像.

FROM alpine:3.6
ENV RUBY_MAJOR 2.4 \
    RUBY_VERSION 2.4.1 \
    RUBY_DOWNLOAD_SHA256 4fc8a9992de3e90191de369270ea4b6c1b171b7941743614cc50822ddc1fe654 \
    RUBYGEMS_VERSION 2.6.12 \
    BUNDLER_VERSION 1.15.3
Run Code Online (Sandbox Code Playgroud)

但是,运行基于此代码段的容器并调用# set |grep RU我看到变量不是单独分配的,而是组合成一个字符串.

RUBY_MAJOR='2.4     RUBY_VERSION 2.4.1     RUBY_DOWNLOAD_SHA256 4fc8a9992de3e90191de369270ea4b6c1b171b7941743614cc50822ddc1fe654     RUBYGEMS_VERSION 2.6.12     BUNDLER_VERSION 1.15.3'
Run Code Online (Sandbox Code Playgroud)

但是,如果我显式设置每个变量如下,我得到预期的输出,并且在调用变量时没有错误.

ENV RUBY_MAJOR 2.4
ENV RUBY_VERSION 2.4.1
ENV RUBY_DOWNLOAD_SHA256 4fc8a9992de3e90191de369270ea4b6c1b171b7941743614cc50822ddc1fe654
ENV RUBYGEMS_VERSION 2.6.12
ENV BUNDLER_VERSION 1.15.3
Run Code Online (Sandbox Code Playgroud)

问题:是否可以将环境变量的设置组合在一条线上?如果是这样,我该怎么做?这是一个好习惯吗?

docker dockerfile

52
推荐指数
2
解决办法
3万
查看次数

从dockerfile编辑文件

我需要在docker镜像中为/etc/sysctl.conf添加几行.是否有一种幂等方式通过dockerfile执行此操作,而不是手动编辑并使用docker commit方法?

docker dockerfile

49
推荐指数
2
解决办法
5万
查看次数

如何在Dockerfile中添加除.git等隐藏目录之外的所有文件/目录

我们经常做的一件事是在Dockerfile构建Docker镜像时打包所有源代码.

ADD . /app
Run Code Online (Sandbox Code Playgroud)

我们怎样才能避免.git以简单的方式包含目录?

我试过用Unix来处理这个问题的方法 ADD [^.]* /app/

完整样本:

docker@boot2docker:/mnt/sda1/tmp/abc$ find .
.
./c
./.git
./Dockerfile
./good
./good/a1
docker@boot2docker:/mnt/sda1/tmp/abc$ cat Dockerfile
FROM ubuntu

ADD [^.]* /app/
docker@boot2docker:/mnt/sda1/tmp/abc$ docker build -t abc .
Sending build context to Docker daemon 4.096 kB
Sending build context to Docker daemon
Step 0 : FROM ubuntu
 ---> 04c5d3b7b065
Step 1 : ADD [^.]* /app/
d ---> 5d67603f108b
Removing intermediate container 60159dee6ac8
Successfully built 5d67603f108b
docker@boot2docker:/mnt/sda1/tmp/abc$ docker run -it abc
root@1b1705dd66a2:/# …

docker dockerfile

49
推荐指数
2
解决办法
4万
查看次数

`docker-compose build`和`docker build`有什么区别?

docker-compose build和之间有什么区别docker build

假设在一个dockerized项目路径中有一个docker-compose.yml文件:

docker-compose build
Run Code Online (Sandbox Code Playgroud)

docker build
Run Code Online (Sandbox Code Playgroud)

docker dockerfile docker-compose

49
推荐指数
5
解决办法
5万
查看次数

标签 统计

dockerfile ×10

docker ×9

docker-compose ×3

bash ×2

alias ×1

apt-get ×1

asp.net-core ×1

git ×1

jenkins ×1

ubuntu ×1

unix ×1