Tri*_*yen 5 mysql node.js docker docker-compose
我刚刚设置了 aDockerfile和 a docker-compose.yml。由于某种原因,Docker 无法运行该脚本。每当运行此脚本时,它都会遍历所有 SQL 文件并迁移该文件。
#!/bin/bash
DB_NAME="database_name"
DB_USER="username"
DB_PASS="password"
DB_HOST="localhost"
#get current version
GET_DATABASE_VERSION="SELECT name FROM version TOP 1"
#
echo "Getting data version"
version=$(mysql -h$DB_HOST -u$DB_USER -p$DB_PASS $DB_NAME -e "SELECT name FROM version")
#trim string to get current version name
version=${version:5}
x="./config/scripts/migration/$version"
echo $version
MIGRATION_PATH="./config/scripts/migration/*"
#get migration file for newer version
for filename in $MIGRATION_PATH -maxdepth 2
do
if [[ -f $filename ]]; then
if [[ "$filename" > "$x" ]] || [ "$filename" == "$x" ]; then
echo "Running migration file: $filename"
mysql -h$DB_HOST -u$DB_USER -p$DB_PASS $DB_NAME < $filename
fi
fi
done
Run Code Online (Sandbox Code Playgroud)
我不断收到错误消息./config/scripts/migrate_local.sh: line 25: mysql: command not found,就是这一行mysql -h$DB_HOST -u$DB_USER -p$DB_PASS $DB_NAME < $filename。
我怎样才能解决这个问题?这是我用来运行的Dockerfile和。docker-compose.ymlsudo docker-compose up --build
FROM node:8
MAINTAINER Tri Nguyen "me@mydomain.com"
RUN mkdir -p /usr/src
WORKDIR /usr/src
COPY package.json /usr/src
RUN npm install
RUN npm rebuild node-sass --force
COPY . /usr/src
EXPOSE 3000 8000
CMD [ "npm", "start" ]
Run Code Online (Sandbox Code Playgroud)
version: "2"
services:
universe:
build: .
working_dir: /usr/src
environment:
- NODE_ENV=default
- PORT=3000
volumes:
- /usr/src
ports:
- "3000:3000"
- "8000:8000"
links:
- redis
- mysql
redis:
image: redis
volumes:
- /data/redis:/data
mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: "root"
MYSQL_DATABASE: "database_name"
MYSQL_USER: "username"
MYSQL_PASSWORD: "password"
volumes:
- /data/mysql:/var/lib/mysql
Run Code Online (Sandbox Code Playgroud)
我用作winston我的记录器。然而,它没有任何作用,但console.log工作得很好。这可能是错误:
universe_1 | errno: 'ECONNREFUSED',
universe_1 | code: 'ECONNREFUSED',
universe_1 | syscall: 'connect',
universe_1 | address: '127.0.0.1',
universe_1 | port: 3307,
universe_1 | fatal: true
Run Code Online (Sandbox Code Playgroud)
您的universe映像未mysql安装命令行工具。您必须在构建 Docker 映像时安装它。
尝试以下 Dockerfile:
FROM node:8
MAINTAINER Tri Nguyen "me@mydomain.com"
RUN mkdir -p /usr/src
WORKDIR /usr/src
COPY package.json /usr/src
RUN npm install
RUN npm rebuild node-sass --force
RUN set -ex; \
apt-get update; \
apt-get install -y --no-install-recommends \
mysql-client
COPY . /usr/src
EXPOSE 3000 8000
CMD [ "npm", "start" ]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15512 次 |
| 最近记录: |