标签: docker-compose

如何使docker-compose从远程git存储库构建映像?

Docker-compose允许您使用preëxisting泊坞窗图像或从源构建.对于构建选项,官方参考需要

包含Dockerfile的目录的路径,或者是git存储库的url.

我想利用后一种情况,这样我就不必在项目中创建一个git子模块,或者在Docker Hub上注册一个新的存储库.不幸的是,没有关于如何格式化url的示例,我尝试的每个表单都被误认为是相对文件路径.

例如

---
letsencrypt:
  build: https://github.com/letsencrypt/letsencrypt.git
...
Run Code Online (Sandbox Code Playgroud)

失败并出现错误:

错误:构建路径/{MY_CURRENT_PATH}/https:/github.com/letsencrypt/letsencrypt.git要么不存在,要么无法访问.

我尝试过的其他表格没有任何运气了:

git docker docker-compose

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

Dockerfile与docker-compose VOLUME

此实验尝试使用此Docker文件构建容器:

FROM lambdalinux/baseimage-amzn:2016.09-000
COPY ./bundle /opt/bundle/
VOLUME /bundle
Run Code Online (Sandbox Code Playgroud)

然后在容器内创建一个/opt/bundle/file.txt并在其中放入一些文本.但是这个文件没有显示在主机上的bundle目录中,正如我在阅读后所预期的那样我是否应该将我的代码包含在COPY/ADD或最后一段的卷中:

在某些情况下,您可能希望同时使用这两种方法.您可以使用COPY使映像包含代码,并使用Compose文件中的卷在开发期间包含来自主机的代码.卷会覆盖图像的目录内容.

Dockerfile VOLUME不和docker-compose.ymlVOLUME一样吗?如果是这样,在这种情况下如何做到这一点,以便主机目录中的更改反映在容器目录中?

我还在主机上创建了一个文件bundle/play.txt但是没有显示在容器内/opt/bundle/...

docker docker-compose

35
推荐指数
1
解决办法
1万
查看次数

Docker compose up --force-recreate --build 使用缓存,但我不希望它这样做

我有以下命令来强制重新创建所有容器:

docker-compose up --force-recreate --build 
Run Code Online (Sandbox Code Playgroud)

但是,我仍然看到以下几行*:

Step 6/10 : RUN cp environment-prod-docker.js environment.js
 ---> Using cache
 ---> e9a2354577ef
Step 7/10 : RUN cat environment.js
 ---> Using cache
 ---> ccbc732030ea
Step 8/10 : RUN npm ci --only=production
 ---> Using cache
 ---> 6baeabd30cf7
Run Code Online (Sandbox Code Playgroud)

我怎样才能禁用该缓存?(例如,它不会重建我的应用程序。)

我已经发现,在给定容器上使用此特定命令可以重新构建它:

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

但由于特定原因,我需要使用单行 build'n'start 命令,那么有没有什么方法可以用 来生成它docker-compose up

我正在使用 docker-compose.yml 版本“3.4”。

*:Dockerfile是这样的:

...
RUN cp environment-prod-docker.js environment.js
RUN cat environment.js
RUN npm ci --only=production
...
Run Code Online (Sandbox Code Playgroud)

docker docker-compose

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

Keycloak 8:已添加用户名为“admin”的用户

我无法使用 ansible 和 docker-compose 启动 keycloak 容器。我收到错误:用户名“admin”的用户已添加到“/opt/jboss/keycloak/standalone/configuration/keycloak-add-user.json”

我有 3 个可靠的工作:

创建网络:

- name: Create a internal network
  docker_network:
    name: internal
Run Code Online (Sandbox Code Playgroud)

设置 postgres:

- name: "Install Postgres"
  docker_compose:
    project_name: posgressdb
    restarted: true
    pull: yes
    definition:
      version: '2'
      services:
        postgres:
          image: postgres:12.1
          container_name: postgres
          restart: always
          env_file:
            - /etc/app/db.env
          networks:
            - internal
          volumes:
            - postgres-data:/var/lib/postgresql/data
            - /etc/app/createdb.sh:/docker-entrypoint-initdb.d/init-app-db.sh
          ports:
            - "5432:5432"
      volumes:
        postgres-data:
      networks:
        internal:
          external:
            name: internal
Run Code Online (Sandbox Code Playgroud)

创建密钥斗篷容器:

- name: Install keycloak
  docker_compose:
    project_name: appauth
    restarted: true
    pull: yes
    definition:
      version: '2' …
Run Code Online (Sandbox Code Playgroud)

jboss docker keycloak docker-compose

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

如何通过名称而不是IP地址访问docker容器?

有没有办法可以使用名称而不是IP地址访问我的docker容器?

我听说过管道工程,我已经看到了docker的一些dns和主机名类型选项,但我仍然无法将所有内容拼凑在一起.

感谢您的时间.

我不确定这是否有用,但这是我到目前为止所做的:

  • 使用docker-machine和vmwarevsphere驱动程序安装docker container host
  • 用docker-compose启动所有服务
  • 我可以使用IP和端口从网络上的任何其他计算机上获取所有服务

我已经将DNS别名条目添加到我的专用网络DNS服务器,它与docker-machine使用的机器名称相匹配.但是,当计算机启动并连接到网络时,它始终会选择不同的IP地址.

我只是迷失在哪里解决这个问题:

  • 网络DNS服务器
  • docker-machine主机名
  • docker container hostname
  • 可能是所有这些的组合

我可能正在寻找类似这个问题的东西:

如何让docker使用我的网络路由器轻松地将dhcp ip分配给容器而不是管道?

任何大方向都会很棒......再次感谢!

dns hostname docker docker-compose docker-machine

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

docker-compose yml在运行后运行脚本

我想在运行后立即运行脚本

`docker-compose up -d` 
Run Code Online (Sandbox Code Playgroud)

这是我的片段docker-compose.yml.其他设置是mysql服务器,redis ...等....但它们不会导致任何问题

web:
  image: nginx
  container_name: web-project
  volumes:
     - ./code:/srv

  working_dir: /srv/myweb
  extra_hosts:
    - "myweb.local:127.0.0.1"
  ports:
   - 8081:80
#  tty: true
  command: sh /srv/scripts/post-run-web.sh
Run Code Online (Sandbox Code Playgroud)

所以每当我跑步 docker-compose up -d或者 docker-compose up一切都停止.(容器不能继续运行).虽然我的shell脚本很简单(运行echos ...或phpunit).这是我的剧本.

#!/bin/bash

echo running post install scripts for web..;
cd /srv/myweb
npm install
composer self-update
composer update
Run Code Online (Sandbox Code Playgroud)

这就是我得到的错误.就像服务器(nginx)还没有运行一样.此外,如果我使用exec bash连接到服务器,并检查进程.我没有看到nginx正在运行(还).

web_1      | You are already using composer version 7a9eb02190d334513e99a479510f87eed18cf958.
web_1      | Loading composer repositories with package information
web_1      | Updating dependencies (including require-dev) …
Run Code Online (Sandbox Code Playgroud)

bash nginx docker docker-compose

34
推荐指数
1
解决办法
6万
查看次数

使用初始模式构建postgres docker容器

我正在寻找构建代表已存在的公司数据库的dockerfiles.同样,我想创建一个通过恢复psql转储开始的docker文件.

我有我psql_dump.sql.目录.

FROM postgres
ADD . /init_data
run "createdb" "--template=template0" "my_database"
run  "psql" "-d" "my_database"  --command="create role my_admin superuser"
run  "psql" "my_database" "<" "init_data/psql_dump.sql"
Run Code Online (Sandbox Code Playgroud)

我认为这样做会很好.我想避免使用.sh脚本的解决方案.像这个解决方案.

我使用template0,因为psql文档说您需要创建原始数据库中的相同用户,并且需要在还原之前使用template0创建数据库.

但是,它给了我一个错误:

createdb: could not connect to database template1: could not connect to server: No such file or directory
        Is the server running locally and accepting
Run Code Online (Sandbox Code Playgroud)

我也在使用docker compose作为整个应用程序,如果在docker-compose中解决这个问题更好,我会很乐意使用基本的psql镜像并使用docker compose来做到这一点.

postgresql docker dockerfile docker-compose

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

sudo:docker-compose:找不到命令

我正在尝试使用sudo运行docker-compose.

我在Ubuntu 16.01上安装了docker和docker-compose.

由于尝试使用curl下载compose时出错,我最终使用pip安装它.

Docker版本1.12.0,构建8eab29e docker-compose版本1.8.0,build 94f7016

然而,当我尝试使用sudo运行docker-compose时,我得到以下内容(使用带有docker的sudo很好)

sudo: docker-compose: command not found
Run Code Online (Sandbox Code Playgroud)

我想对"安装"的含义有不同的定义.我一直在声称没有安装的同一台计算机上使用docker-compose.

$ dpkg -s docker-compose
dpkg-query: package 'docker-compose' is not installed and no information is available
Use dpkg --info (= dpkg-deb --info) to examine archive files,
and dpkg --contents (= dpkg-deb --contents) to list their contents.


$ whereis docker-compose
docker-compose: /home/user/.local/bin/docker-compose

$ pip show --files docker-compose
---
Metadata-Version: 2.0
Name: docker-compose
Version: 1.8.0
Summary: Multi-container orchestration for Docker
Home-page: https://www.docker.com/
Author: Docker, Inc.
Author-email: UNKNOWN
Installer: pip …
Run Code Online (Sandbox Code Playgroud)

linux ubuntu docker docker-compose

34
推荐指数
8
解决办法
6万
查看次数

在Docker容器中安装node_modules并将它们与host同步

我有在node_modulesDocker容器内安装并与主机同步的问题.我的Docker的版本是18.03.1-ce, build 9ee9f40和Docker Compose的版本一样1.21.2, build a133471.

docker-compose.yml看起来像:

# Frontend Container.
frontend:
  build: ./app/frontend
  volumes:
    - ./app/frontend:/usr/src/app
    - frontend-node-modules:/usr/src/app/node_modules
  ports:
    - 3000:3000
  environment:
    NODE_ENV: ${ENV}
  command: npm start

# Define all the external volumes.
volumes:
  frontend-node-modules: ~
Run Code Online (Sandbox Code Playgroud)

我的Dockerfile:

# Set the base image.
FROM node:10

# Create and define the working directory.
RUN mkdir /usr/src/app
WORKDIR /usr/src/app

# Install the application's dependencies.
COPY package.json ./
COPY package-lock.json ./
RUN npm install …
Run Code Online (Sandbox Code Playgroud)

npm node-modules docker docker-compose

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

MYSQL_ROOT_PASSWORD 已设置,但在 docker 容器中收到“用户‘root’@‘localhost’的访问被拒绝(使用密码:YES)”

我有一个 docker-compose 文件和一个 Dockerfile。MySQL 已正确安装。我已经设置了MYSQL_ROOT_PASSWORD。但是当尝试访问 mysql db 时,出现错误 - 访问被拒绝。我已阅读本网站的其他主题,但无法获得太多帮助。:(

这是我的 docker-compose 文件:

version: '3'

volumes:
        db_data: {}

services:
    db:
        build:
            context: .
            dockerfile: ./db/Dockerfile
            args:
                - database=iTel
                - password=123
        image: db_image
        volumes:
            - db_data:/var/lib/mysql
        ports:
            - "3306:3306"
Run Code Online (Sandbox Code Playgroud)

和 Dockerfile:

FROM mysql:5.7.15

ARG database
ARG password

RUN echo ${database}
RUN echo ${password}

MAINTAINER me
ENV MYSQL_DATABASE=${database} \
    MYSQL_ROOT_PASSWORD=${password}
ADD ./db/database100.sql /docker-entrypoint-initdb.d
EXPOSE 3306
Run Code Online (Sandbox Code Playgroud)

以下是构建日志:

docker-compose up -d

Building db
Step 1/9 : FROM mysql:5.7.15
5.7.15: Pulling from library/mysql …
Run Code Online (Sandbox Code Playgroud)

mysql docker dockerfile docker-compose

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