- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我在重新分级 docker-compose 链接时遇到问题。我正在尝试在 ruby 机架应用程序和 mysql 之间建立链接,并解析数据库主机名。
docker-compose.yml:
version: '2'
services:
db:
image: library/mysql:5.6.22
environment:
MYSQL_ROOT_PASSWORD: xxx
MYSQL_DATABASE: xxx
MYSQL_USER: xxx
MYSQL_PASSWORD: xxx
ports:
- "3306:3306"
restart: always
snow:
build: .
links:
- db
depends_on:
- db
ports:
- "9292:9292"
restart: always
雪的Dockerfile:
# Docker file for CentOS with RVM
FROM centos:centos7
MAINTAINER "XXXXX"
RUN useradd -ms /bin/bash t_user
RUN echo "t_user ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
WORKDIR "/home/t_user"
RUN yum -y install curl which tar sudo wget git vim mysql-devel
USER t_user
## Install RVM + ruby 2.1.2
RUN gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
RUN curl -sSL https://get.rvm.io | bash -s stable
ENV PATH /usr/local/rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
RUN /bin/bash -l -c "rvm requirements"
RUN /bin/bash -l -c "rvm install ruby-2.1.2"
RUN /bin/bash -l -c "gem install bundler --no-ri --no-rdoc"
# Copy snow
USER t_user
WORKDIR /tmp
ADD Gemfile Gemfile
ADD Gemfile.lock Gemfile.lock
RUN /bin/bash -l -c "bundle"
WORKDIR "/home/t_user"
RUN mkdir -p snow/current/ && mkdir -p snow/shared/config/
COPY . /home/t_user/snow/current/
RUN rm /home/t_user/snow/current/Dockerfile
USER root
RUN chown -R t_user.t_user snow/
USER trusteer
WORKDIR /home/t_user/snow/current/
RUN /bin/bash -l -c "rake db:migrate"
RUN chmod +x ./bin/runner
ENTRYPOINT ["./bin/snow"]
EXPOSE 9292
我尝试运行 docker-compose up -d 后得到的错误是:
rake aborted!
Mysql2::Error: Unknown MySQL server host 'db' (2)
/home/trusteer/.rvm/gems/ruby-2.1.2/gems/mysql2-0.4.4/lib/mysql2/client.rb:87:in `connect'
/home/trusteer/.rvm/gems/ruby-2.1.2/gems/mysql2-0.4.4/lib/mysql2/client.rb:87:in `initialize'
/home/trusteer/.rvm/gems/ruby-2.1.2/gems/activerecord-4.2.6/lib/active_record/connection_adapters/mysql2_adapter.rb:18:in `new'
/home/trusteer/.rvm/gems/ruby-2.1.2/gems/activerecord-4.2.6/lib/active_record/connection_adapters/mysql2_adapter.rb:18:in `mysql2_connection'
/home/trusteer/.rvm/gems/ruby-2.1.2/gems/activerecord-4.2.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:438:in `new_connection'
/home/trusteer/.rvm/gems/ruby-2.1.2/gems/activerecord-4.2.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:448:in `checkout_new_connection'
/home/trusteer/.rvm/gems/ruby-2.1.2/gems/activerecord-4.2.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:422:in `acquire_connection'
/home/trusteer/.rvm/gems/ruby-2.1.2/gems/activerecord-4.2.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:349:in `block in checkout'
/home/trusteer/.rvm/gems/ruby-2.1.2/gems/activerecord-4.2.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:348:in `checkout'
/home/trusteer/.rvm/gems/ruby-2.1.2/gems/activerecord-4.2.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:263:in `block in connection'
/home/trusteer/.rvm/gems/ruby-2.1.2/gems/activerecord-4.2.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:262:in `connection'
/home/trusteer/.rvm/gems/ruby-2.1.2/gems/activerecord-4.2.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:571:in `retrieve_connection'
/home/trusteer/.rvm/gems/ruby-2.1.2/gems/activerecord-4.2.6/lib/active_record/connection_handling.rb:113:in `retrieve_connection'
/home/trusteer/.rvm/gems/ruby-2.1.2/gems/activerecord-4.2.6/lib/active_record/connection_handling.rb:87:in `connection'
/home/trusteer/.rvm/gems/ruby-2.1.2/gems/activerecord-4.2.6/lib/active_record/migration.rb:916:in `initialize'
/home/trusteer/.rvm/gems/ruby-2.1.2/gems/activerecord-4.2.6/lib/active_record/migration.rb:823:in `new'
/home/trusteer/.rvm/gems/ruby-2.1.2/gems/activerecord-4.2.6/lib/active_record/migration.rb:823:in `up'
/home/trusteer/.rvm/gems/ruby-2.1.2/gems/activerecord-4.2.6/lib/active_record/migration.rb:801:in `migrate'
/home/trusteer/snow/current/Rakefile:10:in `block (2 levels) in <top (required)>'
/home/trusteer/.rvm/gems/ruby-2.1.2/bin/ruby_executable_hooks:15:in `eval'
/home/trusteer/.rvm/gems/ruby-2.1.2/bin/ruby_executable_hooks:15:in `<main>'
泊坞信息:
Containers: 2
Running: 1
Paused: 0
Stopped: 1
Images: 72
Server Version: 1.11.0
Storage Driver: aufs
Root Dir: /var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 110
Dirperm1 Supported: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge null host
Kernel Version: 3.13.0-58-generic
Operating System: Ubuntu 14.04.4 LTS
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 7.507 GiB
Name: galt-tp
ID: DKCR:ZB6N:PW4O:76PF:UZPU:HVZO:XHL4:SRPM:6ACQ:M6T5:AZXN:KVPQ
Docker Root Dir: /var/lib/docker
Debug mode (client): false
Debug mode (server): false
Registry: https://index.docker.io/v1/
WARNING: No swap limit support
我有 docker 关于链接的文档,它说链接指令添加相关容器的 DNS 记录,但它对我不起作用。
有什么想法吗?
最佳答案
在 docker-compose v2 中你不需要链接。所有容器都将在一个公共(public)网络(read more)中创建。通过下一个配置,您可以通过名称解析服务:
version: '2'
services:
db:
image: library/mysql:5.6.22
environment:
MYSQL_ROOT_PASSWORD: xxx
MYSQL_DATABASE: xxx
MYSQL_USER: xxx
MYSQL_PASSWORD: xxx
ports:
- "3306:3306"
restart: always
snow:
build: .
depends_on:
- db
ports:
- "9292:9292"
restart: always
例如,您可以从 snow ping db 容器:
ping db
更新:
您的 snow dockerfile 有问题。 Сoncretely 下一行:
RUN /bin/bash -l -c "rake db:migrate"
你应该明白这个命令是在镜像构建阶段执行的。在此阶段,您没有使用 db
名称的服务。 db
服务仅在图像雪生成后出现。 depends_on
选项文档只说明了服务启动的顺序,没有说明构建顺序。
作为解决方案,您可以使用此命令创建 bash 脚本并在您的 dockerfile 入口点上执行它。
关于mysql - docker-compose 应用程序和数据库之间的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37362196/
我刚刚用 java-swing 为我写了一个桌面时钟,我希望每次登录时该时钟都运行。 为此,我将我的 jar 文件添加到 start 文件夹,我让时钟开始运行。 但我的问题是 - 任务栏中显示的图标允
我正在尝试编写一个程序来检查用户是否上传了新视频。我想让它成为一项后端工作,不断检查用户最近的视频,然后使用我的应用程序向我的用户发送推送。有关于这个问题的任何文档或示例代码吗?我完全不知道从哪里开始
我正在为我的 Raspberry Pi 编写一个程序,该程序由两个主要部分组成: 使用 Spotify-API“Libspotify”搜索音乐并播放音乐的 C 程序。 一个在 apache2 We
我做了一个C++生成命令行并将命令转发给它的程序。目前,我正在将 cmd 控制台的输出发送到一个文件,并在我的 C++ 程序中读取它。但我想让它与管道一起工作。 是否可以从 Windows cmd 行
是否可以使用 C 程序和 malloc 找出处理器的页面大小?而不是使用 sysconf() 调用? 最佳答案 如果你可以#include一些linux内核头文件,你可以在中找到宏PAGE_SIZE
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 8 年前。 Improve this ques
我想实现一个算法: 从 Ruby on Rails 应用程序获取数据库对象作为输入, 对输入执行计算, 根据计算查询 Rails 数据库, 并根据查询生成一组有序结果。 我将用 C(也许是 Objec
我今天的任务是创建一个 Python 脚本(例如 A.py),它可以执行以下操作: 启动 C 程序(例如 CProg)并传递一些参数 启动另一个 Python 脚本(例如 B.py)并传递其他参数 加
我有一个在后台运行的 .NET 程序,需要创建一个可以与该程序通信的 Windows Shell 扩展。起初我以为我会在 .NET 中创建我的 Shell Extension,并使用 IpcServe
Python 程序做前端工作,C 程序做后端工作。它们中的每一个都是一个单独的过程。 Python 进程充当主进程,向 C 进程发送信号和事件。 C 进程生成统计信息、计数器和信息,这些信息被发送回
如何与 shell 脚本共享 C 头文件? shell 脚本通过命名管道与 C 程序通信。让我们假设 C 头文件中定义的枚举 SAMPLE_ONE 由 C 程序写入管道。 shell 脚本从管道中读出
我有一些客户/候选人提示我的程序不能在他们的 Windows 7 64 位版本上运行(已通过屏幕截图确认)。错误很奇怪,例如: in the trial version i am getting a
这个问题在这里已经有了答案: Why SDL defines main macro? (2 个答案) 关闭 7 年前。 我在 Windows 操作系统下使用 QT Creator 的简单程序中使用
我的导师给了我们一个基本的 C shell 来扩展,我目前正在努力让 shell 在用户在命令行中输入“cd [directory]”时更改目录。我已经得到它来停止段错误,但它不会更改目录。谁能告诉我
我以前有过这个工作,但我使用的是指针。 getenv() 不断崩溃,所以我使用 sprintf() 复制了结果。现在我想用 : 删除并只打印第一次出现的地方。请帮忙! #include #inclu
你好,我第一次使用 C primer plus book 学习 C,然后在第 16 章关于 C11 标准的 _Generic 我在 Eclipse c/c++ 中编写了一个程序并构建它产生了 8 个错
我正在尝试从另一个 C 程序执行 python 程序,其中 py 脚本的返回值为 int array[3] 我可以从 python 退出代码中获取这个数组吗?? 编辑:如果问题不清楚,我可以将 pyt
// The countChicken() method should count the number of occurrences of the word chicken (or some oth
我已经通过 ZMQ 使用同一类成功地从 C# 和 C++ 程序传输数据,其中 C++ 类是数据定义,编译器幸运地将字节数组屏蔽到类。 我如何在 C# 和 Node.js 程序之间做同样的事情?我认为他
任何人都可以为我指明有关 makefile 如何工作以及如何使用 eclipse 从头开始基本程序的好教程的方向吗?我正在为 fedora 和 C++ 使用 eclipse 3.4.1 版。提前致
我是一名优秀的程序员,十分优秀!